視圖是個(gè)UIView或者UIView的子類吗氏。它知道如何把自己畫(huà)在一個(gè)矩形區(qū)域。
一個(gè)view同時(shí)也是個(gè)UIResponder( UIView是UIResponder的子類). 也就是說(shuō)view受用戶交互的影響迁匠,比如輕觸,滑動(dòng)。所以周荐,view不僅僅是用戶看到的,也是用戶可以觸到的界面僵娃。組織好你的views概作,這樣應(yīng)用對(duì)不同的touch可以有正確的響應(yīng)。
視圖組織的主要方法是分層級(jí)默怨。視圖可以有多個(gè)子視圖讯榕。但是一個(gè)子視圖只能有一個(gè)直接上層視圖.(superview). 所以會(huì)有個(gè)視圖樹(shù). 這種層次組織方式,可以讓一組視圖一起挪走或者出現(xiàn)匙睹。視圖和它的子視圖們同時(shí)被隱藏或者可見(jiàn)愚屁。視圖的層次結(jié)構(gòu)也是事件響應(yīng)鏈(responder chain)的基礎(chǔ),盡管它們可能并不完全相同痕檬。
View可以從nib文件中創(chuàng)建霎槐,當(dāng)然也可以從代碼創(chuàng)建。這兩種方法沒(méi)有傾向性梦谜,按你的需求來(lái)選擇方法丘跌。
The Window
視圖層級(jí)結(jié)構(gòu)的最上層是應(yīng)用的window.它是UIWindow的實(shí)例(或者它的subclass的實(shí)例).UIWindow也是UIView的一個(gè)子類哈.(也就是說(shuō)UIWindow is a UIView). 一個(gè)應(yīng)用只有一個(gè)main window. 它在應(yīng)用啟動(dòng)的時(shí)候創(chuàng)建,而且在應(yīng)用的lifetime不會(huì)被銷毀或者替代. 它是應(yīng)用所有可見(jiàn)的view的背景唁桩,也是所有子視圖的終極上層視圖闭树。其它視圖都由于是window的subviews而被顯示出來(lái).
注釋: 如果設(shè)備有多個(gè)屏幕,可能需要多個(gè)UIWindow荒澡。本章先只討論一個(gè)屏幕的設(shè)備报辱。
應(yīng)用的Window會(huì)在初始化的時(shí)候填充整個(gè)設(shè)備屏幕. 通過(guò)設(shè)置window的外框到屏幕的邊界來(lái)達(dá)到這一點(diǎn)。用mainstoryboard的時(shí)候单山,UIApplicationMain會(huì)幫你在背后處理碍现。不用的時(shí)候,你需要自己在app生命周期的很早階段創(chuàng)建這個(gè)window饥侵,并設(shè)置外框鸵赫。
let w = UIWindow(frame:UIScreen.mainScreen().bounds)
在iOS 9中,可以不用帶frame參數(shù)躏升,屏幕的邊界會(huì)直接賦值給window的frame.
let w = UIWindow()
https://developer.apple.com/library/prerelease/ios/featuredarticles/ViewControllerPGforiPhoneOS/Art/VCPG_ContainerViewController_fig_1-2_2x.png