iOS簡單自動佈局autoresizing的組合狀況研究

autoresizing是UIView的屬性,能夠用來作一些簡單的自動佈局實現。網絡文章介紹單屬性的居多,對組合狀況研究的較少。本文對組合狀況進行了一些研究。網絡

單屬性的介紹以下佈局

屬性 描述
UIViewAutoresizingNone 不會隨父視圖的改變而改變 
UIViewAutoresizingFlexibleLeftMargin 自動調整view與父視圖左邊距,以保證右邊距不變
UIViewAutoresizingFlexibleWidth 自動調整view的寬度,保證左邊距和右邊距不變 
UIViewAutoresizingFlexibleRightMargin 自動調整view與父視圖右邊距,以保證左邊距不變 
UIViewAutoresizingFlexibleTopMargin 自動調整view與父視圖上邊距,以保證下邊距不變
UIViewAutoresizingFlexibleHeight 自動調整view的高度,以保證上邊距和下邊距不變
UIViewAutoresizingFlexibleBottomMargin 動調整view與父視圖的下邊距,以保證上邊距不變


組合狀況:spa

組合 描述
UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth  

右邊距不變,新的左邊距=(新父視圖的寬-右邊距)*舊左邊距/(舊父視圖的寬 - 右邊距) orm

簡單來講就是:右邊距不變,左邊距是按父視圖去除右邊距後的所佔比例,成比例增加。it

UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidthtable

和上面的公式同樣,左右互換便可

UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidthword

新的邊距=新父視圖的寬/舊父視圖的寬*邊距
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight 底部邊距不變,新的頂邊距=(新父視圖的高-底邊距)*舊頂邊距/(舊父視圖的寬 - 頂邊距) 
UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight 和上面的公式同樣,頂底互換便可
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight 新的邊距=新父視圖的高/舊父視圖的高*邊距


下面對組合的第一種狀況進行詳細演示下。如圖:tab

黑色view的frame爲:(10, 100, 200, 100),藍色view的frame爲:(50, 10, 100, 80). view

當把黑色view的寬增長100時,此時新的左邊距=(300-50)*50/(200-50)=83.333333333333vi

當把黑色view的寬增長200時,此時新的左邊距=(400-50)*50/(200-50)=116.66666666667.

經過log能夠很清楚的看到。

相關文章
相關標籤/搜索