iOS自动布局-Autoresizing

iOS下自动布局有两种技术可用:Autoresizing和Auto Layout。该文先说下Autoresizing,接下来再写一篇文章分析Auto Layout。

Autoresizing是子视图相对父视图的布局,子视图之间不能添加布局约束,这也是Autoresizing的局限性。所以在iOS6+中引入了更加复杂、更加强大的Auto Layout。Autoresizing可以通过可视化界面调整也可以代码设置。

可视化界面:

iOS自动布局-Autoresizing_第1张图片

该设置的意思是sub view相对super view:上、左方向固定,宽度随着父视图拉伸。

有些人可能在较高版本(xcode 4)中找不到这个界面,这是因为从iOS6、xcode 4之后苹果推荐使用Auto Layout,它和Autoresizing是冲突的,需要将其勾选掉之后Autoresizing才可用。

iOS自动布局-Autoresizing_第2张图片

勾选掉的Auto Layout和Size Classes在后续博文中再详细介绍,这时候再看就可以发现Autoresizing选项了。

代码设置:

UIView有个属性autoresizingMask,对应6个非默认枚举值,和可视化界面分别对应。但是,这两者是有区别的,如下:

iOS自动布局-Autoresizing_第3张图片

首先,该枚举值是位运算得到的,说明可以对约束进行组合使用。刚刚说到,通过代码设置和可视化界面是有区别的,如:

UIViewAutoresizingFlexibleLeftMargin表示左边随着父视图自动缩放保持右边和父视图的距离不变,这和可视化界面设置正好相反,不可混淆。


总结:由于Autoresizing只能相对父视图进行约束,子视图之间不可以,在iOS6之后官方更推荐使用Auto Layout。在开发中,如果能满足需求,可以使用Autoresizing,较复杂的情况使用Auto Layout。

你可能感兴趣的:(iOS开发)