W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
????你可能用過UIViewAutoresizingMask
類型的一些常量,應(yīng)用于當(dāng)父視圖改變尺寸的時候,相應(yīng)UIView
的frame
也跟著更新的場景(通常用于橫豎屏切換)。
????在iOS6中,蘋果介紹了自動排版機(jī)制,它和自動調(diào)整不同,并且更加復(fù)雜。
????在Mac OS平臺,CALayer
有一個叫做layoutManager
的屬性可以通過CALayoutManager
協(xié)議和CAConstraintLayoutManager
類來實現(xiàn)自動排版的機(jī)制。但由于某些原因,這在iOS上并不適用。
????當(dāng)使用視圖的時候,可以充分利用UIView
類接口暴露出來的UIViewAutoresizingMask
和NSLayoutConstraint
API,但如果想隨意控制CALayer
的布局,就需要手工操作。最簡單的方法就是使用CALayerDelegate
如下函數(shù):
- (void)layoutSublayersOfLayer:(CALayer *)layer;
????當(dāng)圖層的bounds
發(fā)生改變,或者圖層的-setNeedsLayout
方法被調(diào)用的時候,這個函數(shù)將會被執(zhí)行。這使得你可以手動地重新擺放或者重新調(diào)整子圖層的大小,但是不能像UIView
的autoresizingMask
和constraints
屬性做到自適應(yīng)屏幕旋轉(zhuǎn)。
????這也是為什么最好使用視圖而不是單獨(dú)的圖層來構(gòu)建應(yīng)用程序的另一個重要原因之一。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: