自动布局之autoresizingMask

iOS有两大自动布局利器:autoresizingautolayoutautolayout是iOS6以后新增)。autoresizingUIView的属性,可以用来做一些简单的自动布局实现,但是没有autolayout那样强大。如果你的界面比较简单,要求的细节没有那么高,那么你完全可以使用autoresizing去进行自动布局。

1、autoResizing 介绍

autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基本不用怎么适配布局,所有的ui控件只要相对父控件布局就可以了,没错autoresizing就是一个相对于父控件的布局解决方法;注意:它只能相对父控件布局

  • autoResizing在xcode中可以通过可视化的界面调整也可以通过代码去控制。
  • 在用autoResizing的时候需要关闭autoLayoutsizeclass(如果是用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]

这边需要注意的是UIViewAutoresizingFlexibleBottomMarginUIViewAutoresizingFlexibleTopMargin,容易把相对于父视图的哪个方向的边距保持不变搞混

你可能感兴趣的:(自动布局之autoresizingMask)