iOS有两大自动布局利器:autoresizing和autolayout(autolayout是iOS6以后新增)。autoresizing是UIView的属性,可以用来做一些简单的自动布局实现,但是没有autolayout那样强大。如果你的界面比较简单,要求的细节没有那么高,那么你完全可以使用autoresizing去进行自动布局。
1、autoResizing 介绍
autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基本不用怎么适配布局,所有的ui控件只要相对父控件布局就可以了,没错autoresizing就是一个相对于父控件的布局解决方法;注意:它只能相对父控件布局;
-
autoResizing在xcode中可以通过可视化的界面调整也可以通过代码去控制。 - 在用
autoResizing的时候需要关闭autoLayout和sizeclass(如果是用xcode6),他们之间是互相冲突的。
2、autoResizing 属性
UIViewAutoresizing是一个枚举类型,可以通过图片看到autoResizing通过可视化能调整的只有6根线刚好和它的6个枚举值对应默认是UIViewAutoresizingNone,也就是不做任何处理。
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0, // 不会随父视图的改变而改变
UIViewAutoresizingFlexibleLeftMargin = 1 << 0, // 自动调整view与父视图左边距,以保证右边距不变
UIViewAutoresizingFlexibleWidth = 1 << 1, // 自动调整view的宽度,保证左边距和右边距不变
UIViewAutoresizingFlexibleRightMargin = 1 << 2, // 自动调整view与父视图右边距,以保证左边距不变
UIViewAutoresizingFlexibleTopMargin = 1 << 3, // 自动调整view与父视图上边距,以保证下边距不变
UIViewAutoresizingFlexibleHeight = 1 << 4, // 自动调整view的高度,以保证上边距和下边距不变
UIViewAutoresizingFlexibleBottomMargin = 1 << 5 // 自动调整view与父视图的下边距,以保证上边距不变
};
3、autoResizing 组合情况
// 与父视图的宽度和高度等比例缩放
[self.webView setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]
// 与父视图的顶部的距离保持不变,宽度等比例进行缩放
[self.webView setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin]
// 与父视图的左边距和下边距固定,大小不随父视图进行变化
[self.webView setAutoresizingMask: UIViewAutoresizingFlexibleLeftMargin| UIViewAutoresizingFlexibleTopMargin]
这边需要注意的是UIViewAutoresizingFlexibleBottomMargin和 UIViewAutoresizingFlexibleTopMargin,容易把相对于父视图的哪个方向的边距保持不变搞混