3.5 自動(dòng)布局

2018-02-24 14:50 更新

自動(dòng)布局

????你可能用過UIViewAutoresizingMask類型的一些常量,應(yīng)用于當(dāng)父視圖改變尺寸的時(shí)候,相應(yīng)UIViewframe也跟著更新的場景(通常用于橫豎屏切換)。

????在iOS6中,蘋果介紹了自動(dòng)排版機(jī)制,它和自動(dòng)調(diào)整不同,并且更加復(fù)雜。

????在Mac OS平臺(tái),CALayer有一個(gè)叫做layoutManager的屬性可以通過CALayoutManager協(xié)議和CAConstraintLayoutManager類來實(shí)現(xiàn)自動(dòng)排版的機(jī)制。但由于某些原因,這在iOS上并不適用。

????當(dāng)使用視圖的時(shí)候,可以充分利用UIView類接口暴露出來的UIViewAutoresizingMaskNSLayoutConstraintAPI,但如果想隨意控制CALayer的布局,就需要手工操作。最簡單的方法就是使用CALayerDelegate如下函數(shù):

- (void)layoutSublayersOfLayer:(CALayer *)layer;

????當(dāng)圖層的bounds發(fā)生改變,或者圖層的-setNeedsLayout方法被調(diào)用的時(shí)候,這個(gè)函數(shù)將會(huì)被執(zhí)行。這使得你可以手動(dòng)地重新擺放或者重新調(diào)整子圖層的大小,但是不能像UIViewautoresizingMaskconstraints屬性做到自適應(yīng)屏幕旋轉(zhuǎn)。

????這也是為什么最好使用視圖而不是單獨(dú)的圖層來構(gòu)建應(yīng)用程序的另一個(gè)重要原因之一。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)