1合敦、makeKeyWindow赞哗、makeKeyAndVisible
keyWindow是指主窗口
makeKeyWindow:把當(dāng)前UIWindow作為主窗口参歹;
makeKeyAndVisible:把當(dāng)前UIWindow作為主窗口勾哩,并顯示出來;
2褒繁、UIViewAutoresizing
UIViewAutoresizing是一個(gè)枚舉類型褐健,用于UIView適配
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0, //默認(rèn)值,不會(huì)隨父視圖的改變而改變
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,//自動(dòng)調(diào)整view與父視圖左邊距澜汤,以保證右邊距不變
UIViewAutoresizingFlexibleWidth = 1 << 1,//自動(dòng)調(diào)整view的寬度,保證左邊距和右邊距不變
UIViewAutoresizingFlexibleRightMargin = 1 << 2,//自動(dòng)調(diào)整view與父視圖右邊距舵匾,以保證左邊距不變
UIViewAutoresizingFlexibleTopMargin = 1 << 3,//自動(dòng)調(diào)整view與父視圖上邊距俊抵,以保證下邊距不變
UIViewAutoresizingFlexibleHeight = 1 << 4,//自動(dòng)調(diào)整view的高度,以保證上邊距和下邊距不變
UIViewAutoresizingFlexibleBottomMargin = 1 << 5//自動(dòng)調(diào)整view與父視圖的下邊距坐梯,以保證上邊距不變
};
使用示例:
self.mainTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
3徽诲、imageNamed與imageWithContentsOfFile區(qū)別
兩者都是用于實(shí)例化UIImage
imageName在使用的時(shí),系統(tǒng)會(huì)cache并管理cache吵血,對(duì)于重復(fù)加載的圖像谎替,速度會(huì)提升很多,這樣反而用戶體驗(yàn)好蹋辅,但是圖片不宜過大钱贯;
imageWithContentsOfFile在使用完成后,不會(huì)緩存侦另,適用于不常使用的圖片(如開啟啟動(dòng)頁)
imageName基于assets中取圖片秩命;
imageWithContentsOfFile基于Bundle取圖片,要求圖片不能放在assets中褒傅;
4弃锐、IBAction
該關(guān)鍵字用于告知Interface Builder,此方法是一個(gè)操作殿托,且可以被某個(gè)控件觸發(fā)霹菊;
示例:
-(IBAction) greenClick{
NSLog(@"綠色點(diǎn)擊");
}
添加關(guān)鍵字后,該方法左側(cè)出現(xiàn)一個(gè)圓圈支竹,可以用來與某控件連接旋廷,如Button
5、IBOutlet
關(guān)鍵字IBOutlet 是一個(gè)對(duì)象屬性礼搁,用于引用另一個(gè)對(duì)象柳洋。
該關(guān)鍵字用于告知 Interface Builder,在包含 IBOutlet 聲明的對(duì)象與引用對(duì)象之間建立連接叹坦。
示例:
@property (nonatomic , weak) IBOutlet UILabel *label;
添加關(guān)鍵字后熊镣,該方法左側(cè)出現(xiàn)一個(gè)圓圈,可以用來與storyboard上的UILabel控件
6、Xib(x指xml绪囱,ib指interface build)
.xib編譯后為.nib;
.xib用于描述UI界面测蹲,可以是Controller,也可以是UIView;
.xib常用于描述局部界面鬼吵,如:自定義控件(自定義控件時(shí)扣甲,可通過class關(guān)聯(lián)代碼類)
.xib可以放置多組控件,使用時(shí)獲取出來是NSArray格式齿椅,獲取方式:
方式1:
NSArray* array = [[NSBundle mainBundle]loadNibNamed:@"TestXib1" owner:nil options:nil];
[self.view addSubview:array[0]];
方式2:
UINib *nib = [UINib nibWithNibName:@"TestXib1" bundle:[NSBundle mainBundle]];
NSArray* array = [nib instantiateWithOwner:nil options:nil];
[self.view addSubview:array[0]];
7琉挖、initWithFrame、initWithCoder涣脚、awakeFromNib
自定義控件時(shí)示辈,會(huì)用到3個(gè)系統(tǒng)方法:initWithFrame、initWithCoder遣蚀、awakeFromNib
initWithFrame矾麻,如果控件是從代碼[[XibShow alloc] initWithFrame方式創(chuàng)建的,會(huì)執(zhí)行initWithFrame方法芭梯,從xib险耀、storyboard中創(chuàng)建時(shí),不會(huì)執(zhí)行該方法玖喘;
initWithCoder甩牺,如果控件是從xib、storyboard中創(chuàng)建時(shí)累奈,會(huì)執(zhí)行該方法柴灯;
awakeFromNib,該方法是在initWithCoder之后調(diào)用费尽;
8赠群、頁面布局
頁面布局通常包含三種方式:手寫代碼、xib旱幼、storyboard
1查描、xib通常用于封裝控件,也可用于頁面布局柏卤;
2冬三、storyboard主要用于頁面布局,可包含多個(gè)View Controller缘缚,描述多VC直接的關(guān)系勾笆;
xib用于頁面布局時(shí),controller名稱與xib名稱最好一致桥滨,不然加載不到窝爪;
9弛车、頁面跳轉(zhuǎn)
跳轉(zhuǎn)示例:
xib跳轉(zhuǎn):
BViewController* bc = [[BViewController alloc]init];
bc.bprotocol = self;
bc.param = @"這是主頁面參數(shù)";
[self presentViewController:bc animated:true completion:nil];
storyboard跳轉(zhuǎn):
UIStoryboard* usb = [UIStoryboard storyboardWithName:@"AStoryboard" bundle:nil]; AViewController* ac = [usb instantiateViewControllerWithIdentifier:@"AViewController"];
ac.block = ^(NSString *str) {
NSLog(@"A頁面協(xié)議回調(diào):%@",str);
};
ac.param = @"這是主頁面參數(shù)";
[self presentViewController:ac animated:true completion:nil];
10、頁面間參數(shù)傳遞
示例:A頁面 ---> B頁面 --> C頁面
1蒲每、A --> B , 可在B頭文件中定義屬性纷跛,A傳屬性即可;
2邀杏、B --> A 贫奠,可在B頭文件中定義協(xié)議、協(xié)議屬性望蜡,B調(diào)用協(xié)議中定義的方法唤崭,回傳參數(shù),
A的Controller實(shí)現(xiàn)協(xié)議脖律,重寫協(xié)議方法谢肾,接收B的數(shù)據(jù)(類似于Android的接口回調(diào))
3、B --> A, 可在B頭文件中定義block回調(diào)状您、block屬性,B通過block屬性回傳參數(shù)兜挨,
A直接通過B的block屬性接收B回傳的數(shù)據(jù)膏孟;
4、C --> A , 跨頁面拌汇,可通過通知實(shí)現(xiàn)柒桑;