iOS回顧筆記 ( 01 ) --- XIB和代碼創(chuàng)建程序的對比

很多時候我們工作很久突然閑下來的時候,是不是也感到無聊過?這就是我現(xiàn)在的生活,不過閑一段時間也挺好,可以好好回顧一下自己以前學習iOS路上的點點滴滴,做到溫故而知新。

且回顧、且整理記錄、且分享。

一個簡單的iOS小程序

簡單實現(xiàn)一個小程序 --- “改變文字顏色”

Snip20170228_2.png

這個小程序很簡單,實現(xiàn)步驟:

  • 所需元素:三個button,一個Label
  • 監(jiān)聽button的點擊事件,做對應修改顏色功能

這個小Demo通常有兩種實現(xiàn)方式,純代碼和XIB,下面介紹一下兩者實現(xiàn)和區(qū)別:


純XIB實現(xiàn)

這個直接上圖吧

Snip20170228_5.png
  • 左邊是Xib拖的Label和三個button
  • 右邊是Xib拖線與代碼進行關聯(lián)和對應



純代碼實現(xiàn)


#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, weak) UILabel *label;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 1.創(chuàng)建Label
    UILabel *label = [UILabel new];
    label.text = @"我是測試文字";
    label.textAlignment = NSTextAlignmentCenter;
    label.frame = CGRectMake(0, 50, self.view.frame.size.width, 50);
    self.label = label;
    [self.view addSubview:label];
    
    // 2.創(chuàng)建三個button
    UIButton *redBtn = [self creatBtnWithTitle:@"紅" selector:@selector(redColor:)];
    redBtn.frame = CGRectMake(0, CGRectGetMaxY(label.frame), 375/3, 50);
    
    UIButton *greenBtn = [self creatBtnWithTitle:@"綠" selector:@selector(greenColor:)];
    greenBtn.frame = CGRectMake(375/3, CGRectGetMaxY(label.frame), 375/3, 50);
    
    UIButton *blueBtn = [self creatBtnWithTitle:@"藍" selector:@selector(blueColor:)];
    blueBtn.frame = CGRectMake(375/3*2, CGRectGetMaxY(label.frame), 375/3, 50);
    
}

// 封裝創(chuàng)建按鈕的公共代碼
- (UIButton *)creatBtnWithTitle:(NSString *)title selector:(SEL)selector
{
    UIButton *btn = [UIButton new];
    [btn setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
    [btn setTitle:title forState:UIControlStateNormal];
    [btn addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    return btn;
}

// 紅色按鈕的點擊事件
- (void)redColor:(id)sender {

    self.label.textColor = [UIColor redColor];
}

// 綠色按鈕的點擊事件
- (void)greenColor:(id)sender {

    self.label.textColor = [UIColor greenColor];
}

// 藍色按鈕的點擊事件
- (void)blueColor:(id)sender {

    self.label.textColor = [UIColor blueColor];
}

這兩種方式雖然都很簡單,但是有點不同,下面總結一下各自的特點

  • XIB
    • 方便快捷,特別適用于局部UI的快速搭建
    • XIB拖線直觀,但是多人開發(fā)容易暗含多種陷阱(例如:拖線的方法找不到;或者代碼里面注釋了,但是xib還是正常顯示的,一點擊就崩潰;或者一個控件連線多個方法,出現(xiàn)異常等)
    • 適用范圍:
      • 適用于一些靜態(tài)頁面,如果每次UI都動態(tài)改變的還是代碼為主。
    • XIB經(jīng)典錯誤(運行過程中找不到對應方法)
Snip20170228_6.png
  • 純代碼
    • 相對麻煩,本來動動手拖個線的事,還要敲一些基礎代碼,效率低(不是指編譯或運行效率)
    • 整潔易懂,如果代碼清晰的話,看起來也是很整潔的。
    • 思路清晰,多人合作不易出現(xiàn)類似XIB或Storyboard那樣的雜亂的連線的問題。
    • 動態(tài)UI的首選方式。

最后計算機在編譯的過程中無論哪種方式實現(xiàn)都是轉化成代碼的方式,代碼是萬能的

  • 關于XIB里面的IBOutlet和IBAction
    • IBOutlet:聲明插座變量,和XIB進行連線的標識,只有聲明為IBOutlet屬性才能跟XIB/StoryBoard中的控件連線
    • IBAction:從返回值角度看,等同于void,它也是和XIB進行連線的標識,只有聲明為IBAction屬性才能跟XIB/StoryBoard中的控件連線
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 引言 學到這里,xib給我?guī)淼膸椭呀?jīng)很大了,最大的莫過于UI控件的創(chuàng)建、屬性的賦值再也不用寫代碼,就UI開發(fā)來...
    二亮子閱讀 7,390評論 41 82
  • 1.自定義控件 a.繼承某個控件 b.重寫initWithFrame方法可以設置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,696評論 2 4
  • 寫在前面 我不算是個資深碼農(nóng),有些iOS的編程經(jīng)驗。希望找到一種高效的方式來創(chuàng)作出自己的iOS應用。大家都知道純代...
    五九樓閱讀 14,813評論 3 40
  • iOS應用是非常注重用戶體驗的,在某些方面上應用的成功與否于UI界面是否漂亮,以及應用交互設計上有著非常重要的關系...
    相關函數(shù)閱讀 29,175評論 6 53
  • 引言 之前說了xib的優(yōu)缺點、如何應用、解決文件沖,算掃了xib學習上的一只攔路虎,現(xiàn)在我們就開始具體的學習一下x...
    二亮子閱讀 11,139評論 7 38

友情鏈接更多精彩內(nèi)容