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能夠很清楚的看到。