文中示例的項目地址:github
主要記錄一些與StoryBoard相關的東西.目錄如下:
?- StackView
?- StoryBoard Reference?
?- Scene Dock
?- custom segue?
?- unwind segue?
?- something special
1.stackView
自動對其內部的視圖作約束,當內部某視圖hidden == true時,自動將其隱藏,其它視圖約束依次修改。
使用場合:
? ?A:顯示一組相似視圖:比如一橫排按鈕等;
? ?B:顯示一組布局大致相同視圖;
? ?C:運行時動態(tài)插入或刪除視圖,并保證優(yōu)美的約束.
? (使用場合的demo在文章開頭的地址中)

說明:
? ?1.插入一個UIView,系統(tǒng)會自動對其布局,也可以手動設置約束;
? ?2.若視圖已存在,可以通過hidden屬性使其更新視圖布局.
? ?3.如果出現(xiàn)約束警告,且無法通過update constraints刪除,可以嘗試在警告視圖中放入一個子視圖再移除,或者更新下stackview的Distribution
? ?4.如果動態(tài)更新stackView的視圖,控制臺會打印大量的過渡約束警告:將軸向固定約束的優(yōu)先級改為750即可
一個簡單練習:stackView_camera
2.StoryBoard Reference
在storyBoard中添加對另外一個storyBoard中的引用,從而兩者實現(xiàn)交互。
解決問題:團隊合作造成的IB沖突;龐大的IB管理困難;多個IB文件無法拖線,等.
使用場合:
? ? 1.拆分StoryBoard
? ? ? ? ? ? ?Editor -> Refactor to StoryBoard
? ?2:多個StoryBoard互相拖線
? ? ? ? ? ? StoryBoard拖放一個StoryBoard Reference控件;
? ? ? ? ? ? 設置其StoryBoard名稱(對應StoryBoard文件名mmm)和Reference ID(對象具體的控制器的ID:newID),則此控件代表了mmm.StoryBoard文件下的newID控制器
詳情見項目地址....
3.Scene Dock

使用場合:
? ? ? 1.tableHeaderView
? ? ? 2.tableView cell 選中狀態(tài)
? ? ? 3.特定情況下才顯示的view
使用方式:
? ? ?1.拖任意一個屬于UIView子類的視圖到控制器的Dock欄;?
? ? ?2.布局該視圖....(可以使用Auto Layout);
? ? ?3.將該視圖拖到控制器中 Outlet
? ? ?4.在需要顯示的地方addSubView 或者 =(注意設置frame或AutoLayout)
注意:
? ? ?同一個scene dock只能同時出現(xiàn)一份;
4.custom segue

類似于自定義專場動畫。
1.自定義一個類,繼承自UIStoryboardSegue;
2.重寫其perform方法,設置其目標控制器的轉場代理為自身 UIViewControllerTransitioningDelegate;
3.實現(xiàn)轉場協(xié)議的代理方法:返回自定義的專場動畫類實例;
4.實現(xiàn)一個轉場動畫類(第三步需要返回的類的實例),遵守動畫轉場協(xié)議
UIViewControllerAnimatedTransitioning
? ? ? ? ? .動畫持續(xù)時間
? ? ? ? ?.動畫的出現(xiàn)形式
? ? ? ? ? ? ? ? ? 獲取fromVC fromView toVC toView;
? ? ? ? ? ? ? ? ?根據(jù)實際情況自己手動寫UIView動畫;
? ? ? ? ? ? ? ? ?需要transitionContext.containerView()?.addSubview
? ? ? ? ? ? ? ? ?結束后必須調用transitionContext.completeTransition(true)
說明:
1.SJCustomSegue: UIStoryboardSegue
? ? ? ? ?自定義的segue,用于轉場
2.UIViewControllerTransitioningDelegate
? ? ? ? ?轉場目標控制器的動畫器由該代理設置
3.UIViewControllerAnimatedTransitioning
? ? ? ?動畫控制器的協(xié)議,必須實現(xiàn)其兩個方法,才能算一個動畫
5.unwind segue
使用場景:
? ? ? ? 實現(xiàn)棧頂控制器回退到任意控制器.

使用方式:
? ? ? ? ? ?1.在需要被跳轉的控制器中實現(xiàn) anyName(para:UIStoryBoardSegue) ->Void{}方法
? ? ? ? ? ? ? ? ? 需要添加@IBAction前綴;空方法即可,不需要任何代碼實現(xiàn)
? ? ? ? ? 2.拖拽跳轉觸發(fā)按鈕到其自身控制器dock欄的exit鍵;
? ? ? ? ? 3.在彈出的菜單中,選中希望跳轉的控制器中實現(xiàn)的第一步的方法,即可
關于知識點,暫時介紹到這里,下面分享一些StoryBoard中的小技巧,隨時補充中。。。
6.something special
總結的一些小技巧。 ?
? 1.在storyBoard中創(chuàng)建tableView的tableHeaderView
? ? ? ? ?A.拖拽任意一個視圖到tableView最上方即可。
? ? ? ? ? ? ? ? ? ? 缺點:其子視圖不能在自定義類中拖線,但可以直接拖到控制器
? ? ? ? ?B.scene dock,好用不說了
? ? 2.在storyBoard中創(chuàng)建tableView的HeaderView
? ? ? ? ? ?A.純代碼,xib不說了
? ? ? ? ? ?B.scene dock 不說了
? ? ? ? ? c.tableViewCell.contentView 棒極了
? ? 3.如何讓section懸停,或者不懸停
? ? ? ? ? ?設置tableview的style:plain or group
? ? 4.某個較深的界面需要多次調試
? ? ? ?設置項目的Main Interface為當前控制器,必要時構造一些假數(shù)據(jù)
? ? 5.過渡約束(控制臺打印一堆信息)
? ? ? ? 設置約束的優(yōu)先級,簡直一抓一個準。
? ? 6.在屬性面板增加屬性(比如圓角,borderColor,borderWidth等)
? ? ? @IBInspectable ? 屬性前加上改關鍵詞,不解釋
待續(xù)。。。。