StoryBoard,俗稱(chēng)sb,是iOS下可視化編程的方式之一,另一種是xib。
使用storyBoard可以方便快捷的拖拽視圖控制器,控件,設(shè)置根視圖控制器,并且可以直觀的看到位置大小,效果等,如果能熟練使用storyBoard,可以少寫(xiě)很多代碼。
因?yàn)槎鄐toryBoard還沒(méi)怎么用過(guò),這里只說(shuō)單storyBoard,也就是Main.storyBoard。
![Uploading storyBoard-1_280278.gif . . .]
](http://upload-images.jianshu.io/upload_images/1803560-ef9bc50b0e120441.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如圖,主路口是可以直接拖動(dòng)的,或者在某個(gè)視圖控制器上勾選。
如果想為視圖控制器A添加一個(gè)navigationController或者TabBarController,可以按照下圖方式設(shè)置:
下面是storyBoard的初始頁(yè)面:

注意,在添加之前先點(diǎn)擊A。
然后就可以在右下角往視圖控制器上拖想要的控件,不再詳細(xì)介紹
頁(yè)面間的跳轉(zhuǎn)
首先在storyBoard上拖拽第二個(gè)視圖控制器,和你創(chuàng)建的類(lèi)一個(gè)類(lèi)型

這樣就已經(jīng)和你創(chuàng)建的類(lèi)關(guān)聯(lián)上了,storyBoardID就是相當(dāng)于該頁(yè)面的唯一標(biāo)識(shí),而identifier是segue的標(biāo)識(shí)符,會(huì)根據(jù)不同的segue標(biāo)識(shí)符處理數(shù)據(jù)
如果在其他類(lèi)里引入該類(lèi)時(shí),就需要用storyBoardID找到這個(gè)頁(yè)面,而不能重新創(chuàng)建初始化,以頁(yè)面跳轉(zhuǎn)為例,storyBoard之間的跳轉(zhuǎn)都使用如下方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"secondPush"]) {
SecondViewController *secondVC = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]instantiateViewControllerWithIdentifier:@"second"];
secondVC.CustomLabel.backgroundColor = [UIColor cyanColor];
}
}
這里的@“second”就是剛剛寫(xiě)的storyBoardID.
自定義segue:
自定義segue步驟
步驟一 : 新建 個(gè)類(lèi)繼承 UIStoryboardSegue
步驟 二: 選中前 個(gè)控制器,按住control鼠標(biāo) 標(biāo)輔助完成連線,選 擇custom。
步驟三: 選中 定義 segue,設(shè)置 segue的identifier 以及關(guān)聯(lián)類(lèi)。
步驟四: 在 segue類(lèi)里重寫(xiě)perform方法(界 間跳轉(zhuǎn)默認(rèn)執(zhí)行的方法), 自定義跳轉(zhuǎn)效果。

//重寫(xiě)自定義方法
-(void)perform
{
//獲取源控制器:
ViewController *sourceVC = (ViewController *)self.sourceViewController;
//獲取目標(biāo)控制器:
SecondViewController *secondVC = (SecondViewController *)self.destinationViewController;
//動(dòng)畫(huà)效果
//第一個(gè)參數(shù):源控制器的視圖
//第二個(gè)參數(shù):目標(biāo)控制器的視圖
//第三個(gè)參數(shù):動(dòng)畫(huà)持續(xù)的時(shí)間
//第四個(gè)參數(shù):動(dòng)畫(huà)樣式
//第五個(gè)參數(shù):動(dòng)畫(huà)完成之后進(jìn)行的操作
[UIView transitionFromView:sourceVC.view toView:secondVC.view duration:1 options:(UIViewAnimationOptionTransitionFlipFromTop) completion:^(BOOL finished) {
//動(dòng)畫(huà)完成之后進(jìn)行的內(nèi)容
[sourceVC.navigationController pushViewController:secondVC animated:YES];
}];
}
StoryBoard約束:
storyBoard約束很簡(jiǎn)單,點(diǎn)到想要約束的控件,然后點(diǎn)擊下面的按鈕

另外還有等高,等寬,等比例等約束,我個(gè)人比較喜歡直接用ctrl鍵按著控件拖:

可以按照需要的比例進(jìn)行調(diào)試。
如果想要清除已經(jīng)加的約束,可以進(jìn)行如下操作

最后,放一個(gè)簡(jiǎn)單的登錄頁(yè)面的效果圖(不是所有屏幕適配?。?

storyBoard易坑點(diǎn),小技巧(會(huì)補(bǔ)充更新,歡迎交流)
控件和關(guān)聯(lián)到頁(yè)面成屬性或方法之后,如果想刪掉,記得在storyBoard上也刪了

tabBar,navigationBar,navigationItem設(shè)置圖片時(shí),想讓圖片不被渲染:

設(shè)置navigationBar的背景圖片,我在設(shè)置navigationBar的背景圖片時(shí),發(fā)現(xiàn)直接在右側(cè)操作設(shè)置不行,查到的最簡(jiǎn)單的方法就是在AppDelegate.m里寫(xiě)一個(gè)方法:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg_nav.png"] forBarMetrics:UIBarMetricsDefault];
即可,有大神知道直接設(shè)置背景圖片是哪里的問(wèn)題的話請(qǐng)留言或私信,感謝?。。。?/p>
如圖:

當(dāng)按鈕的類(lèi)型是System的時(shí)候,設(shè)置圖片是沒(méi)有反應(yīng)的,需要設(shè)置為custom,不過(guò)現(xiàn)在一般操作時(shí)會(huì)自動(dòng)更換成custom