@property(nonatomic) UIViewAutoresizing autoresizingMask;
UIViewAutoresizing是一個枚舉類型,默認是UIViewAutoresizingNone,也就是不做任何處理。
該屬性用于自動調節(jié)子控件在父控件中的位置和寬高。
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
各屬性值的含義
UIViewAutoresizingNone 不自動調整。
UIViewAutoresizingFlexibleLeftMargin 自動調整view與父視圖左邊距,以保證右邊距不變
UIViewAutoresizingFlexibleWidth 自動調整view的寬度,保證左邊距和右邊距不變
UIViewAutoresizingFlexibleRightMargin 自動調整view與父視圖右邊距,以保證左邊距不變
UIViewAutoresizingFlexibleTopMargin 自動調整view與父視圖上邊距,以保證下邊距不變
UIViewAutoresizingFlexibleHeight 自動調整view的高度,以保證上邊距和下邊距不變
UIViewAutoresizingFlexibleBottomMargin 自動調整view與父視圖下邊距,以保證上邊距不變
例子
在View上加載一個自定義控件,如下圖所示
豎屏.png
轉屏后的效果,如下圖所示
橫屏.png
想要讓自定義控件在轉屏后,同樣居中對齊,只需設置該自定義UIView與父視圖的左邊距和右邊距的比例不變,上邊距和下邊距的比例不變。
在自定義控件中添加以下代碼:
self.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;
最終運行效果如下圖所示
最終效果圖.png