StoryBoard,俗稱sb,是iOS下可視化編程的方式之一,另一種是xib。
使用storyBoard可以方便快捷的拖拽視圖控制器,控件,設(shè)置根視圖控制器,并且可以直觀的看到位置大小,效果等,如果能熟練使用storyBoard,可以少寫很多代碼。
因為多storyBoard還沒怎么用過,這里只說單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)
如圖,主路口是可以直接拖動的,或者在某個視圖控制器上勾選。
如果想為視圖控制器A添加一個navigationController或者TabBarController,可以按照下圖方式設(shè)置:
下面是storyBoard的初始頁面:
注意,在添加之前先點擊A。
然后就可以在右下角往視圖控制器上拖想要的控件,不再詳細介紹
頁面間的跳轉(zhuǎn)
首先在storyBoard上拖拽第二個視圖控制器,和你創(chuàng)建的類一個類型
這樣就已經(jīng)和你創(chuàng)建的類關(guān)聯(lián)上了,storyBoardID就是相當于該頁面的唯一標識,而identifier是segue的標識符,會根據(jù)不同的segue標識符處理數(shù)據(jù)
如果在其他類里引入該類時,就需要用storyBoardID找到這個頁面,而不能重新創(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步驟
步驟一 : 新建 個類繼承 UIStoryboardSegue
步驟 二: 選中前 個控制器,按住control鼠標 標輔助完成連線,選 擇custom。
步驟三: 選中 定義 segue,設(shè)置 segue的identifier 以及關(guān)聯(lián)類。
步驟四: 在 segue類里重寫perform方法(界 間跳轉(zhuǎn)默認執(zhí)行的方法), 自定義跳轉(zhuǎn)效果。
//重寫自定義方法
-(void)perform
{
//獲取源控制器:
ViewController *sourceVC = (ViewController *)self.sourceViewController;
//獲取目標控制器:
SecondViewController *secondVC = (SecondViewController *)self.destinationViewController;
//動畫效果
//第一個參數(shù):源控制器的視圖
//第二個參數(shù):目標控制器的視圖
//第三個參數(shù):動畫持續(xù)的時間
//第四個參數(shù):動畫樣式
//第五個參數(shù):動畫完成之后進行的操作
[UIView transitionFromView:sourceVC.view toView:secondVC.view duration:1 options:(UIViewAnimationOptionTransitionFlipFromTop) completion:^(BOOL finished) {
//動畫完成之后進行的內(nèi)容
[sourceVC.navigationController pushViewController:secondVC animated:YES];
}];
}
StoryBoard約束:
storyBoard約束很簡單,點到想要約束的控件,然后點擊下面的按鈕
另外還有等高,等寬,等比例等約束,我個人比較喜歡直接用ctrl鍵按著控件拖:
可以按照需要的比例進行調(diào)試。
如果想要清除已經(jīng)加的約束,可以進行如下操作
最后,放一個簡單的登錄頁面的效果圖(不是所有屏幕適配!!)
storyBoard易坑點,小技巧(會補充更新,歡迎交流)
控件和關(guān)聯(lián)到頁面成屬性或方法之后,如果想刪掉,記得在storyBoard上也刪了
tabBar,navigationBar,navigationItem設(shè)置圖片時,想讓圖片不被渲染:
設(shè)置navigationBar的背景圖片,我在設(shè)置navigationBar的背景圖片時,發(fā)現(xiàn)直接在右側(cè)操作設(shè)置不行,查到的最簡單的方法就是在AppDelegate.m里寫一個方法:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg_nav.png"] forBarMetrics:UIBarMetricsDefault];
即可,有大神知道直接設(shè)置背景圖片是哪里的問題的話請留言或私信,感謝?。。?!
如圖:
當按鈕的類型是System的時候,設(shè)置圖片是沒有反應(yīng)的,需要設(shè)置為custom,不過現(xiàn)在一般操作時會自動更換成custom