3.5 自動布局

2018-02-24 14:50 更新

自動布局

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

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號