一言疗、UIView
UIView是iPhone程序非常重要的元素。所有可視化控件都繼承于UIView并展示各自獨特的功能颂砸,如UILabel展示文字、UIImageView顯示圖片死姚,這才形成了豐富絢麗人乓、形形色色的程序界面。UIView主要有三方面功能:
- 渲染區(qū)域內(nèi)容與執(zhí)行動畫
- 管理子視圖
- 處理觸摸都毒、手勢等事件
二色罚、iOS界面層次結(jié)構(gòu)
iPhone程序以樹形結(jié)構(gòu)管理其上的控件,每個視圖都置于其父視圖上并管理著自己的子視圖账劲。
一般而言戳护,程序界面以UIWindow為樹根節(jié)點,管理所有子視圖瀑焦。UIWindow也是UIView的子類腌且,但是UIWindow并不無任何可視化內(nèi)容,它只負責管理其上的子視圖榛瓮。一般而言铺董,每個應用程序只有一個UIWindow。事實上Android禀晓,Cocos2d-x等也是采用這樣的樹形管理策略精续。這種樹形結(jié)構(gòu)的優(yōu)勢在于渲染時通過簡單的樹深度優(yōu)先原則即可正確渲染界面坝锰。另一方面,這樣的樹形結(jié)構(gòu)在消息傳遞方面也是很便捷重付。例如一個觸摸事件放生時顷级,UIWindow首先接收到消息,然后將消息傳遞給響應的子視圖确垫,響應子視圖又再傳給它的子視圖弓颈。通過這樣的層級傳遞,可以效率較高地找到真正的響應對象森爽。
三恨豁、界面更新原理
在與程序的交互中(觸摸屏幕,手勢操作等)爬迟,界面經(jīng)常需要更新橘蜜。這些界面的更新過程是怎樣的呢?
以觸摸事件為例從觸摸事件的發(fā)生到界面改變主要經(jīng)過八個步驟:
- 用戶觸摸屏幕
- 硬件將觸摸事件傳遞到UIKit框架
- UIKit框架將觸摸事件打包成UIEvent對象并傳遞給響應View
- View接收到事件后更改視圖內(nèi)容
- UIKit發(fā)起重新布局視圖
- UIKit發(fā)起重新渲染繪制視圖
- 更改的視圖發(fā)送給GPU
- GPU重新繪制視圖并在屏幕中顯示