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
,容易把相对于父视图的哪个方向的边距保持不变搞混
网友评论