IOS之autoresizingMask屬性詳解
在UIView中有一個屬性autoresizingMask,開發者可以利用這個屬性來設置當父View發生旋轉、伸縮等變化後子View在父View中的相對位置如何自動改變。
autoresizingMask是一個枚舉類型的值
enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;
UIViewAutoresizingNone不做任何調整
UIViewAutoresizingFlexibleLeftMargin 自動調整與super view左邊的距離,右邊距離保持不變。
UIViewAutoresizingFlexibleWidth 子View的寬度自動縮放,高度不變。
UIViewAutoresizingFlexibleRightMargin 自動調整與super view右邊的距離,左邊距離保持不變。
UIViewAutoresizingFlexibleTopMargin 自動調整與super view頂部的距離,底部距離保持不變。
UIViewAutoresizingFlexibleHeight 子View的高度自動縮放,寬度不變。
UIViewAutoresizingFlexibleBottomMargin 自動調整與super view底部的距離,頂部距離保持不變。
如果有多個類型要同時選擇時可以用“|”分隔。
在Xib文件中我們經常能看到 。我們可以通過選擇這些紅線是實線還是虛線來達到上面設置屬性autoresizingMask的效果。外框的四個紅線從左邊開始順時針對應與UIViewAutoresizingFlexibleLeftMargin、UIViewAutoresizingFlexibleTopMargin、UIViewAutoresizingFlexibleRightMargin、UIViewAutoresizingFlexibleBottomMargin 。內框水平線對應於UIViewAutoresizingFlexibleWidth、垂直線對應於UIViewAutoresizingFlexibleHeight。
在UIView中還有一個屬性autoresizesSubviews,這個屬性是決定當前View是否允許子View通過設置autoresizingMask屬性來自動調整View。當autoresizesSubviews設置爲NO時,子View的autoresizingMask屬性也就失效了。