UI基礎(一),UI基礎(

來源:互聯網
上載者:User

UI基礎(一),UI基礎(

 本文以及後期主要講解學習UI以及IOS開發必須掌握的一些知識和重點,當然學習這些知識最好要有c和oc的基礎,如果沒有基礎,建議先看廣州小碼哥教育"李明傑"總裁、IOS學院"李南江"院長講解的零基礎學習IOS開發。

 

第一個ios程式

 1 @interface ViewController : UIViewController 2  3 @property(nonatomic, weak)IBOutlet UILabel *lable; 4  5 @end 6  7  8  9 @interface ViewController ()10 11 @end12 13 @implementation ViewController14 15 /**16  紅色按鈕17  */18 - (IBAction)redBtnClick19 {20 //    -[ViewController redBtnClick]21     NSLog(@"%s", __func__);22     // 拿到UILabel對象, 修改對象的屬性, 讓label對象變為紅色23     self.lable.textColor = [UIColor redColor];24     self.lable.text = @"我是紅色文字";25     self.lable.backgroundColor = [UIColor purpleColor];26     self.lable.font = [UIFont systemFontOfSize:30];27     self.lable.textAlignment = NSTextAlignmentCenter;28 }29 /**30  綠色按鈕31  */32 - (IBAction)greenBtnClick33 {34     NSLog(@"%s", __func__);35     self.lable.textColor = [UIColor greenColor];36 }37 /**38  藍色按鈕39  */40 - (IBAction)blueBtnClick41 {42     NSLog(@"%s", __func__);43     self.lable.textColor = [UIColor blueColor];44 }45 @end

 

一、控制器

  1.什麼是控制器:

    任何繼承於UIViewController的類,都稱之為控制器

  2.控制器的作用:

    管理UI介面(負責管理UI介面的建立和一些事件的處理)

  3.注意點:

    UI介面是可以和它與之對應的控制器進行連線的,我們可以通過連線的方式,讓UI介面上的元素和控制器中的代碼產生一定的關係;預設情況下,UI介面中的元素是不能和方法進行關聯的,要想關聯UI介面中的元素必須將方法的傳回值修改為IBAction。

 

二、IBAction和IBOutlet 
  • IBAction

    - (IBAction)redBtnClick;

   1. IBAction

     1.1 從傳回值角度上看,作用相當於void

     1.2 只有傳回值聲明為IBAction的方法,才能跟storyboard中的控制項進行連線

     1.3 IBAction只能加在方法上, 不能加在屬性上

 

   2. IBAction幾種連線方式

     從"控制器"往"Storyboard"連線

     從"Storyboard"往"控制器"連線

     直接在"Storyboard"中往"Storyboard"上的介面頂部連線

     直接在"Storyboard"中往"Storyboard"上的工具條連線

     不用先定義方法, 直接從"Storyboard"往"控制器"連線(常用)  

 

   3.IBAction連線的注意點:

     3.1 在Storyboard中拷貝元素的時候需要注意

       拷貝的同時會將以前的連線一起拷貝

       一個方法可以很多個控制項關聯

       一個控制項可以和很多方法進行連線,在開發中, 一般情況下不會這樣寫

     3.2 如果將按鈕關聯的方法刪除, 運行之後會報一個經典錯誤

         reason: '-[ViewController redBtnClick]: unrecognized selector sent to instance 0x7fb4aa618e50'

     3.3 IBAction只能作為方法的傳回值

 

 

  • IBOutlet

  @property(nonatomic, weak)IBOutlet UILabel *lable;

  1. IBOutlet

    1.1 只有聲明為IBOutlet的屬性,才能跟storyboard中的控制項進行連線

    1.2 屬性要想能夠連線必須在資料類型前面加上IBOutlet

  2. IBOutlet的幾種連線方式

    從"控制器"往"Storyboard"連線

    從"Storyboard"往"控制器"連線

    直接在"Storyboard"中往"Storyboard"上的介面頂部連線

    直接在"Storyboard"中往"Storyboard"上的工具條連線

    不用先定義方法, 直接從"Storyboard"往"控制器"連線

  3. 注意點:

    一個控制項可以關聯多個屬性

    一個屬性不可以關聯多個控制項

    在進行屬性連線的時候, Xcode會自動幫我們進行類型檢測, 如果類型不符那麼不能連線

    如果將屬性和控制項連線之後又將屬性刪除了, 那麼只要程式運行就會報一個經典錯誤

       '[<ViewController 0x7fe9d9f1a5d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key lable.'

    任何UI控制項都可以和屬性進行連線, 但是並不是任何控制項都可以和方法連線. 只有繼承於UIControl的控制項才可以連線

 

三、UIView

+ 什麼是控制項?

    - 螢幕上的所有UI元素都叫做控制項,也有人叫做視圖、組件

    - 按鈕(UIButton)、文本(UILabel)都是控制項

 

+ 控制項的共同屬性有哪些?

    - 尺寸

    - 位置

    - 背景色

    - ......

 

+ 蘋果將控制項的共同屬性都抽取到父類UIView中

    - 所有的控制項最終都繼承自UIView

    - UIButton、UILabel都是繼承自UIView(可以查看標頭檔)

 

+  每一個控制器(UIViewController)內部都有個預設的UIView屬性

    - @property(nonatomic,retain) UIView *view;

    - 控制器中管理的其他所有控制項都是這個view的子控制項(直接或者間接)

 

+ UIView常見屬性和方法

 1 + @property(nonatomic,readonly) UIView *superview; 2  //獲得自己的父控制項對象 3  4 + @property(nonatomic,readonly,copy) NSArray *subviews; 5  //獲得自己的所有子控制項對象 6  7 + @property(nonatomic) NSInteger tag; 8  //控制項的ID(標識),父控制項可以通過tag來找到對應的子控制項 9 10 + @property(nonatomic) CGAffineTransform transform;11 // 控制項的形變屬性(可以設定旋轉角度、比例縮放、平移等屬性)12 13 + @property(nonatomic) CGRect frame;14 // 控制項矩形框在父控制項中的位置和尺寸(以父控制項的左上方為座標原點)15 16 + @property(nonatomic) CGRect bounds;17  //控制項矩形框的位置和尺寸(以自己左上方為座標原點,所以bounds的x、y一般為0)18 19 + @property(nonatomic) CGPoint center;20 // 控制項中點的位置(以父控制項的左上方為座標原點)21 22 23 24 25 - (void)addSubview:(UIView *)view;26  //添加一個子控制項view27 28 - (void)removeFromSuperview;29  //從父控制項中移除30 31 - (UIView *)viewWithTag:(NSInteger)tag;32  //根據一個tag標識找出對應的控制項(一般都是子控制項)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.