【UI進階】關於IB的理解,不知道這樣是否可以

main.storyboard裏面通過拖動創建的所有控件都是一個對象,這些對象都有對應的類,比如按鈕的類是UIButton,視圖View的類是UIView。我們把我們拖動的控件(比如視圖)綁定到我們自定的類,則這個控件對象就是由我們自定義的類創建的對象,如果不指定類,那麼就是系統默認的類。


同理,storyboard對應一個類,創建項目的時候,系統把main.storyboard控制器對象指定爲ViewController類的實例,當然我們也可以定義其他控制器指向main.stroyboard。這樣main.storyboard就是我們指定控制器的對象

 

每一個控制器都有一個自己的view視圖,其他控件添加到該視圖之上,控制器可以通過[self.viewviewWithTag:]來獲取指定tag的控件,或者給控件託線到控制器當中,這樣控制器就有一個成員屬性,及該控件(同樣可以這樣理解,控制器定義的成員屬性,控件類型是weak,在代碼當中並沒有賦值,當時通過託線的方式指向了一個控件,這樣就有了值。也同樣說明了stroyboard中控件都是對象,只是控制器沒有指針只指向。只是間接擁有)

 

main.storyboard的理解

1main.storyboard中的結構大致是這個樣子


目前我們學過的有SZViewController,MyView,MyLabel,MyButton,MyTextField(視圖上的名字),這些在storyboard中可以看見的都是對象

2、比如SZViewController這個對象,他是通過ViewController這個類創建的(項目創建的時候指定該類,本人比較懶,沒有建一個屬於自己的控制器)。爲什麼說是通過該類創建的呢,因爲我們指定了該類,如果不指定,默認是UIViewController。


 

3、程序啓動的時候會根據info.plist文件找到Main.storyboard,程序加載storyboard的過程是如何實現的呢

 加載main.storyboard底層做什麼事情

 1.創建UIWindow對象

 2.加載storyboard,創建storyboard中的控制器

 3.把新創建的控制器作爲窗口的根控制器,讓窗口顯示在屏幕上

 注意:窗口要顯示出來,必須保證設置尺寸,避免銷燬

窗口的顯示makeKeyAndVisible

 

4、每一個控制器擁有一個自己的視圖,因爲UIWindow僅僅提供的是繪畫支持,而UIView纔是提供繪畫的畫板
而且控制器自己的視圖是強引用

@property(nonatomic,retain)UIView *view; 

圖中的MyView也是一個對象,是屬於SZViewController

 

5MyView對空間MyLabel,MyButton,MyTextField是強引用(類似代碼當中的addSubView),所以我們在託線的時候就不需要在對這些對象強引用了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章