国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

淺析iOS開發中StoryBoard搭建的UI界面

2020-02-19 15:50:34
字體:
來源:轉載
供稿:網友

因為小編最近才接觸到iOS,蘋果公司建議使用storyboard來構建所有的界面,所以小編也遵循了潮流,下面這篇文章是關于淺析iOS開發中StoryBoard搭建的UI界面,跟著武林技術頻道小編來學習吧!

StoryBoard 的本質
StoryBoard 是蘋果在 iOS 5 中引入的新技術方案,目的是給紛繁復雜的 nib、xib 們一個溫暖的家,讓他們之間的關系更直觀地展示出來,并提供了一種新的頁面間跳轉方式 segue。

StoryBoard 的本質是一個 XML 文件,描述了若干窗體、組件、Auto Layout 約束等關鍵信息。示例文件:https://github.com/johnlui/AutoLayout/blob/master/AutoLayout/Base.lproj/Main.storyboard

但是,我們應該認識到一個更重要的本質:使用 StoryBoard 的 iOS 項目均以初始化 StoryBoard 文件作為整個程序的初始化入口,UIViewController 類是由于被 StoryBoard 綁定而初始化,從而開始運行的。從下面兩個地方可以找到蛛絲馬跡:

201622492244990.jpg (1632×701)

201622492326203.jpg (994×414)

奇怪的 bug
初學 iOS 開發的時候,如果使用了 StoryBoard,大家可能遇到過這個奇怪的 bug,頁面全黑:

201622492439713.jpg (375×689)

如果大家跟我一樣純靠找資料自學而沒有人教的話,一定出現過死活找不到原因而新建一個項目的尷尬情況吧 o(╯□╰)o,其實秘密在這里:

201622492458193.jpg (1659×766)

這表示這個窗體是此 StoryBoard 的初始窗體的意思,這樣 APP 在啟動以后,會先啟動主 StoryBoard,主 StoryBoard 會啟動它的初始窗體,初始窗體啟動跟他綁定的類,這樣 APP 就啟動完成了。

多 StoryBoard 最佳實踐
托福喵 【已下架】1.0 版是我第一個上架的項目,只用了初始化項目時建立的那唯一的 Main.storyboard,里面有二十幾個窗體,在 Xcode 里每次點擊打開都要等五秒才能完全渲染完畢,而且 Segue 線交錯縱橫,非常凌亂。這顯然不是個好的組織方式。

我現在正在重寫的托福喵第二版已經采用了多 StoryBoard 的解決方案,把一些獨立的窗體組合放到一起使用一個 StoryBoard 進行組織,比如登陸注冊的幾個窗體,考試界面的幾個窗體,關于我們的幾個窗體等。下面我們將一起學習如何使用多 StoryBoard。

新建第二個 StoryBoard

如下圖:

201622492611740.jpg (730×430)

給 Second.storyboard 拖入一個 View Controller:

201622492629985.jpg (1920×988)

如何調用 Second.storyboard 中的窗體?

首先,編譯項目,我們得到如下警告:

201622492708138.jpg (469×155)

這個警告的意思是,這個窗體沒有入口,無法被觸達。如何讓他能夠被觸達?兩種方式:

設置為該 StoryBoard 的初始窗體:

201622492726688.jpg (1136×639)

給該窗體設置一個 StoryBoard ID:

201622492744655.jpg (1122×730)

能夠被觸達之后,讓我們用代碼調用他們:

① 作為初始窗體

?

let vc = UIStoryboard(name: "Second", bundle: nil).instantiateInitialViewController() as! UIViewController
self.navigationController?.pushViewController(vc, animated: true)


② 設置了 StoryBoard ID

?

?

?


let vc = UIStoryboard(name: "Second", bundle: nil).instantiateViewControllerWithIdentifier("First") as! UIViewController
self.navigationController?.pushViewController(vc, animated: true)


當然,也可以用 self.presentViewController 調用他們。

?

查看效果

201622492809891.gif (420×723)

?

多個storyboard間跳轉總結
Stroyboard 可以被看作一個管理View畫面的集合。也就是說一個iOS專案裡面并沒有限制只能有一個Storyboard。
所以在你的APP專案中,你可以把功能相近的View放到同一個APP之中,形成一個群組,方便功能上的管理。

1.在專案中準備2個Storyboard

在一個IOS的專案裡面建立兩個StoryBoard。

2. 在第一個StoryBoard中,我們拉出了一個Navigation 的Template,在[Main View Controller]這個中View裡面拉進一個Button。

3. 接著在第二個StoryBoard裡面我們也拉出一個Navigation template。
在畫面中拉一個Label標籤,并且在裡面我們把文字改成Storyboard2。這只是用來識別目前我們被帶到哪一個畫面之中。

4. 在第一個StoryBoard畫面中的Botton裡面,我們要在按鈕的[TouchUpinside]事件中撰寫底下的程式碼。

?

UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"Storyboard2" bundle:nil];
UIViewController* test2obj = [secondStoryBoard instantiateViewControllerWithIdentifier:@"test2"];? //test2為viewcontroller的StoryboardId
[self.navigationController pushViewController:test2obj animated:YES];


第一步就是要先指定UIStoryboard物件,這邊我們要指向專案中的第二個Storyboard。
接下來我們要先New出一個Controller物件,這是你要Push到的下一個View頁面,他所對應的Controller。
最后使用self.navigationController推網頁到下一頁。

通過武林技術頻道小編介紹的淺析iOS開發中StoryBoard搭建的UI界面,相信大家都有了一定的了解,想要了解更多的技術內容,請繼續關注武林技術頻道吧!

?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 自治县| 丹寨县| 化州市| 西城区| 舞阳县| 百色市| 霍城县| 朝阳区| 仙桃市| 霍邱县| 冕宁县| 嘉黎县| 江阴市| 大渡口区| 长子县| 茌平县| 东乡县| 宁都县| 咸丰县| 苏尼特左旗| 曲阳县| 盐源县| 临江市| 孟村| 贡嘎县| 兴山县| 延吉市| 光泽县| 吉隆县| 临城县| 定远县| 思南县| 岳阳市| 施秉县| 博湖县| 滦南县| 武胜县| 贵阳市| 广水市| 高尔夫| 南澳县|