StoryBoard,俗稱sb凰浮,是iOS下可視化編程的方式之一我抠,另一種是xib。
使用storyBoard可以方便快捷的拖拽視圖控制器袜茧,控件菜拓,設(shè)置根視圖控制器,并且可以直觀的看到位置大小笛厦,效果等纳鼎,如果能熟練使用storyBoard,可以少寫很多代碼递递。
因?yàn)槎鄐toryBoard還沒怎么用過喷橙,這里只說單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的初始頁面:
注意氯迂,在添加之前先點(diǎn)擊A。
然后就可以在右下角往視圖控制器上拖想要的控件言缤,不再詳細(xì)介紹
頁面間的跳轉(zhuǎn)
首先在storyBoard上拖拽第二個(gè)視圖控制器嚼蚀,和你創(chuàng)建的類一個(gè)類型
這樣就已經(jīng)和你創(chuàng)建的類關(guān)聯(lián)上了,storyBoardID就是相當(dāng)于該頁面的唯一標(biāo)識(shí)管挟,而identifier是segue的標(biāo)識(shí)符轿曙,會(huì)根據(jù)不同的segue標(biāo)識(shí)符處理數(shù)據(jù)
如果在其他類里引入該類時(shí),就需要用storyBoardID找到這個(gè)頁面僻孝,而不能重新創(chuàng)建初始化导帝,以頁面跳轉(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”就是剛剛寫的storyBoardID.
自定義segue:
自定義segue步驟
步驟一 : 新建 個(gè)類繼承 UIStoryboardSegue
步驟 二: 選中前 個(gè)控制器,按住control鼠標(biāo) 標(biāo)輔助完成連線,選 擇custom穿铆。
步驟三: 選中 定義 segue,設(shè)置 segue的identifier 以及關(guān)聯(lián)類您单。
步驟四: 在 segue類里重寫perform方法(界 間跳轉(zhuǎn)默認(rèn)執(zhí)行的方法), 自定義跳轉(zhuǎn)效果。
//重寫自定義方法
-(void)perform
{
//獲取源控制器:
ViewController *sourceVC = (ViewController *)self.sourceViewController;
//獲取目標(biāo)控制器:
SecondViewController *secondVC = (SecondViewController *)self.destinationViewController;
//動(dòng)畫效果
//第一個(gè)參數(shù):源控制器的視圖
//第二個(gè)參數(shù):目標(biāo)控制器的視圖
//第三個(gè)參數(shù):動(dòng)畫持續(xù)的時(shí)間
//第四個(gè)參數(shù):動(dòng)畫樣式
//第五個(gè)參數(shù):動(dòng)畫完成之后進(jìn)行的操作
[UIView transitionFromView:sourceVC.view toView:secondVC.view duration:1 options:(UIViewAnimationOptionTransitionFlipFromTop) completion:^(BOOL finished) {
//動(dòng)畫完成之后進(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)單的登錄頁面的效果圖(不是所有屏幕適配!挖垛!)
storyBoard易坑點(diǎn),小技巧(會(huì)補(bǔ)充更新秉颗,歡迎交流)
控件和關(guān)聯(lián)到頁面成屬性或方法之后痢毒,如果想刪掉,記得在storyBoard上也刪了
tabBar蚕甥,navigationBar哪替,navigationItem設(shè)置圖片時(shí),想讓圖片不被渲染:
設(shè)置navigationBar的背景圖片菇怀,我在設(shè)置navigationBar的背景圖片時(shí)凭舶,發(fā)現(xiàn)直接在右側(cè)操作設(shè)置不行,查到的最簡(jiǎn)單的方法就是在AppDelegate.m里寫一個(gè)方法:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg_nav.png"] forBarMetrics:UIBarMetricsDefault];
即可爱沟,有大神知道直接設(shè)置背景圖片是哪里的問題的話請(qǐng)留言或私信帅霜,感謝!:羯臁I砑健!
如圖:
當(dāng)按鈕的類型是System的時(shí)候,設(shè)置圖片是沒有反應(yīng)的搂根,需要設(shè)置為custom珍促,不過現(xiàn)在一般操作時(shí)會(huì)自動(dòng)更換成custom