StoryBoard 相關

StoryBoard

下面是 術語 介紹

  • segue 轉場
    一個視圖控制器在Storyboard中的官方術語是“場景(scene)”即横,但這兩種叫法是相通的。一個視圖控制器在Storyboard中可以叫做場景东囚。
    也叫過Storyboard 分鏡

  • tableview的表項
    prototype cell 原型表項
    static cell 靜態(tài)表項
    靜態(tài)表項 需要把所有DataSource 的代理刪除掉

  • deployment 部署

  • trait 特點

  • variation 差異

  • File inspector(文件檢查器)


自動布局(Auto Layout)
尺寸歸類(Size Classes
自動布局由iOS 6引入页藻,尺寸歸類由iOS 8引入。
關于 Size Classes


  • embed 嵌入

把一個普通試圖控制器(viewController)嵌入一個 導航控制器(navigationController)
除了使用拖入導航控制器之外,還可以使用xcode 的菜單欄的按鈕來操作
如下: Editor -> Embed in -> Navigation Controller


  • 關于 storyboard tableviewcell 創(chuàng)建.

    • Prototype cell 類型
      可以配置下面的屬性
      • Style
      • Identifiler
      • Accessory
      • RowHeight

    然后直接在代碼中使用這個cell
    Prototype cell 必須在 .swift 文件中實現(xiàn) tableview的 DataSource 代理方法

  • static cell 創(chuàng)建

不需要實現(xiàn)tabelview 的 DataSource 代理方法
直接在storyboard 中 的cell 空間中拖入什么控件 運行就會顯示什么, 而且 cell 中的控件可以跟 viewController 連線創(chuàng)建屬性 (prototype cell 則不行)
StoryBoard 和自定義cell文件
在storyboard中拖入tableview 會帶有一個 cell 選則cell 類型為 dynamic prototypes
創(chuàng)建cell 文件(.swift .h .m 不帶有xib)
在上面的storyBoard中 給 prototypecell 添加想要的控件.
在cell 文件中 添加相應的屬性 (以前都是直接連線創(chuàng)建屬性,現(xiàn)在是先創(chuàng)建屬性)
如先寫這樣的代碼:@IBOutlet weak var gameLabel:UILabel!
- 可以把屬性和控件連線連起來.
- 或者直接在storyboard 中 選中這個cell ->選中 shower the connections inspector 我們可以看到cell文件中創(chuàng)建的屬性都在這, 直接和相應的控件連線就好.
- 或者. 選中storyBoard 中的 cell. 把cell 和 cell 中的控件連線, 可以彈出cell 的屬性,把控件和這些屬性對應鏈接.
但不必為該表創(chuàng)建數(shù)據(jù)源璃吧,也不必為此編寫cellForRowAtIndexPath方法畜挨,你可以直接在Interface Builder中完成設計。這個特性叫做靜態(tài)表項(static cell)
static cell 不需要 data source 把 所有有關 dataoSource 代理方法全部刪掉

static cell 只在 UITableViewController 中有效, 其他 viewController 中編譯不通過
目前來講噩凹,使用原型表項或靜態(tài)表項就必須使用Storyboard。


  • Trait Variations 和 Size Classes 使用
    xcode8中的 Trait Variations 就是 Size Classes
    自己寫的紅色 sizeClass demo 紅色view 在豎屏下顯示,橫屏下不顯示,
    設置過程如下: storyBoard 中選中這個view , 控制面板中的 show the attributes inspector 中 選擇最后一個選項的加號, 設置為 wC hR installed

interface building 最下面的面板, 可以給不同大小的設備定制不同的約束.

  1. 選擇設備
  2. 選擇方向
  3. 選中按鈕 [Vary for Traits]
  4. 添加約束, 該約束只在此特定設備上起作用.[這里是抽象的設備 為 Size Class]
  5. 重復上面的步驟 給其他設備添加約束

不同設備的界面布局不同如何設置

  1. 針對不同的設備添加不同的約束[適用于 iPad 和 iPhone 完全是兩套布局時的情況]

使用 Vary for Traits

  1. 不區(qū)分設備先給最常用的布局添加約束, 再針對每個特定的約束 添加設備條件 [適合于所有設備都是同一個布局模式,每種設備大體布局不變,只有少數(shù)幾個約束會發(fā)生細微變化的情況]

不使用 Vary for Traits


  • StoryBoard 界面跳轉 segue
  • Storyboard使用教程二
    action segue (轉場)中的選項
  • push
  • model 模態(tài)轉場 相當于 present
  • custom 自定義

控制器返回上個頁面, 返回的方法寫在上個頁面中.(表示很難理解)

返回上個頁面

返回按鈕控件和storyBoard中的Exit 連線, 選擇合適的退出方法.

凡是界面跳轉都會執(zhí)行下面的方法

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    }
  • storyBoard 性能問題
    storyBoard 中 視圖控制器是按需加載的,就像手動載入nib一樣幻赚。

界面返回 舉例

當返回上個頁面時, 比如你選擇了某個cell 來返回上個頁面, 程序先返回上個頁面 再執(zhí)行選中cell 的事件. 是不是很坑.(前提是 cell 的點擊事件綁定了 Exit)
這時候我們可以使用下面的方法來解決 每次返回上個頁面時都會先調(diào)用下,下面的方法

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "SaveSelectedGame" {
        }
 }

關于 Storyboard 的文章


拆分storyBoard

  1. 選中你要拆分的模塊
  2. Editor -> Refactor to StoryBoard [這個時候 會以你選中的內(nèi)容去新建一個storyBoard文件]

引入其他storyBoard

  • 給需要的storyBoard 添加引用其他storyBoard 信息
  1. 拖入控件 StoryBoard Refefrence , 選中它, 在 Attribute inspector 中 填入
    • StoryBoard 你要引用的storyBoard 名字
    • Reference ID 你要引用的storyBoard 中哪一個控制器(記得在該控制器中 storyBoard ID 設置一樣的標識符)
  2. 連線 拖入的 StoryBoard Reference 控件

  • storyboard 中手動跳轉
    選中originViewController 右鍵連線到 destinationViewVOntoller 選中彈出菜單中的push\modal 或者別的.

storyBoard 中 界面跳轉自定義模式.

基于Storyboard的創(chuàng)建多分支NavigationController的方法

  1. 創(chuàng)建繼承 UIStoryboardSegue 的文件 比如: MyShowSegue:UIStoryboardSegue
  2. 在 文件 MyShowSegue 中重寫方法perform 在這個方法中自定義一些東西
  3. 當你在StoryBoard 中連線的時候, 除了彈出 菜單 show push modal 外 還有我們剛剛創(chuàng)建的這中類型 My Show
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箩退,一起剝皮案震驚了整個濱河市佳谦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌啥刻,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娄涩,死亡現(xiàn)場離奇詭異映跟,居然都是意外死亡,警方通過查閱死者的電腦和手機努隙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門荸镊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贷洲,你說我怎么就攤上這事∮殴梗” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長叶雹。 經(jīng)常有香客問我圈匆,道長番挺,這世上最難降的妖魔是什么屯掖? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任粪摘,我火速辦了婚禮徘意,結果婚禮上映砖,老公的妹妹穿的比我還像新娘邑退。我一直安慰自己劳澄,他們只是感情好秒拔,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布作谚。 她就那樣靜靜地躺著庵芭,像睡著了一般双吆。 火紅的嫁衣襯著肌膚如雪好乐。 梳的紋絲不亂的頭發(fā)上蔚万,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天反璃,我揣著相機與錄音版扩,去河邊找鬼礁芦。 笑死悼尾,一個胖子當著我的面吹牛闺魏,可吹牛的內(nèi)容都是我干的析桥。 我是一名探鬼主播泡仗,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼娩怎,長吁一口氣:“原來是場噩夢啊……” “哼截亦!你這毒婦竟也來了崩瓤?” 一聲冷哼從身側響起却桶,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤肾扰,失蹤者是張志新(化名)和其女友劉穎集晚,沒想到半個月后偷拔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莲绰,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡蛤签,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年称龙,在試婚紗的時候發(fā)現(xiàn)自己被綠了鲫尊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沦偎。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搔驼,死狀恐怖匙奴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情啦租,我是刑警寧澤荒揣,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布恳蹲,位于F島的核電站俩滥,受9級特大地震影響霜旧,放射性物質(zhì)發(fā)生泄漏挂据。R本人自食惡果不足惜崎逃,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一个绍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧错森,春花似錦吟宦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瓦阐,卻和暖如春蜗侈,著一層夾襖步出監(jiān)牢的瞬間睡蟋,已是汗流浹背踏幻。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戳杀,地道東北人该面。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像信卡,于是被迫代替她去往敵國和親隔缀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容