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