你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> IOS UIView自動調整尺寸

IOS UIView自動調整尺寸

編輯:關於IOS

自動尺寸調整行為

當您改變視圖的邊框矩形時,其內嵌子視圖的位置和尺寸往往也需要改變,以適應原始視圖的新尺寸。如果視圖的autoresizesSubviews屬性聲明被設置為YES,則其子視圖會根據autoresizingMask屬性的值自動進行尺寸調整。簡單配置一下視圖的自動尺寸調整掩碼常常就能使應用程序得到合適的行為;否則,應用程序就必須通過重載layoutSubviews方法來提供自己的實現。 設置視圖的自動尺寸調整行為的方法是通過位OR操作符將期望的自動尺寸調整常量連結起來,並將結果賦值給視圖的autoresizingMask屬性。表2-1列舉了自動尺寸調整常量,並描述這些常量如何影響給定視圖的尺寸和位置。舉例來說,如果要使一個視圖和其父視圖左下角的相對位置保持不變,可以加入UIViewAutoresizingFlexibleRightMargin和UIViewAutoresizingFlexibleTopMargin常量,並將結果賦值給autoresizingMask屬性。當同一個軸向有多個部分被設置為可變時,尺寸調整的裕量會被平均分配到各個部分上。 UIViewAutoresizingNone 這個常量如果被設置,視圖將不進行自動尺寸調整。 UIViewAutoresizingFlexibleHeight 這個常量如果被設置,視圖的高度將和父視圖的高度一起成比例變化。否則,視圖的高度將保持不變。 UIViewAutoresizingFlexibleWidth 這個常量如果被設置,視圖的寬度將和父視圖的寬度一起成比例變化。否則,視圖的寬度將保持不變。 UIViewAutoresizingFlexibleLeftMargin 這個常量如果被設置,視圖的左邊界將隨著父視圖寬度的變化而按比例進行調整。否則,視圖和其父視圖的左邊界的相對位置將保持不變。 UIViewAutoresizingFlexibleRightMargin 這個常量如果被設置,視圖的右邊界將隨著父視圖寬度的變化而按比例進行調整。否則,視圖和其父視圖的右邊界的相對位置將保持不變。 UIViewAutoresizingFlexibleBottomMargin 這個常量如果被設置,視圖的底邊界將隨著父視圖高度的變化而按比例進行調整。否則,視圖和其父視圖的底邊界的相對位置將保持不變。 UIViewAutoresizingFlexibleTopMargin 這個常量如果被設置,視圖的上邊界將隨著父視圖高度的變化而按比例進行調整。否則,視圖和其父視圖的上邊界的相對位置將保持不變。       如果您通過Interface Builder配置視圖,則可以用Size查看器的Autosizing控制來設置每個視圖的自動尺寸調整行為。上圖中的靈活寬度及高度常量和 Interface Builder中位於同樣位置的彈簧具有同樣的行為,但是空白常量的行為則是正好相反。換句話說,如果要將靈活右空白的自動尺寸調整行為應用到 Interface Builder的某個視圖,必須使相應方向空間的Autosizing控制為空,而不是放置一個支柱。幸運的是,Interface Builder通過動畫顯示了您的修改對視圖自動尺寸調整行為的影響。 如果視圖的autoresizesSubviews屬性被設置為NO,則該視圖的直接子視圖的所有自動尺寸調整行為將被忽略。類似地,如果一個子視圖的自動尺寸調整掩碼被設置為UIViewAutoresizingNone,則該子視圖的尺寸將不會被調整,因而其直接子視圖的尺寸也不會被調整。 請注意:為了使自動尺寸調整的行為正確,視圖的transform屬性必須設置為恆等變換;其它變換下的尺寸自動調整行為是未定義的。 自動尺寸調整行為可以適合一些布局的要求,但是如果您希望更多地控制視圖的布局,可以在適當的視圖類中重載layoutSubviews方法。有關視圖布局管理的更多信息,請參見“響應布局的變化”部分。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved