IOS自动布局之Autoresizing
对于现在的iOS开发,随着技术的不断升级,我们实现的功能也在不断的增多,但考虑到开发的便捷和高效性,很多人开始了可视化编程(当然也不排除有的依然钟爱纯代码)StoryBoard,Xib。一般用过的人都说好。既然提到了可视化编程,那UI布局就浮出水面了,IOS中的两大自动布局利器:Autoresizing 和 Autolayout。Autolayout的功能确实强大,这里我们介绍Autoresizing 。autoresizing是UIView的属性,一直都有,相比Autolayout(iOS6以后出现)功能性略低,但是有些案例,使用Autoresizing要比Autolayout更加便捷,两种布局方式各有利弊吧!扯完了,下面开始介绍Autoresizing的特性和简单实用。
1. Autoresizing特性
UIView有一个autoresizingMask的属性,这个属性是个枚举值
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也就是不会autoresize,但是我们可是设置其他的枚举值,对view的大小和位置进行自适应。
通常在Xcode里面创建的Xib是不会显示Autoresizing布局的,默认是Autolayout的,我们怎样才能显示Autoresizing布局呢?这样做:
(1)将xib里面的autolayout的选项去掉
(2) 打开那个尺子图标,就会显示autoresizing布局了
autoresizing布局图解:
PS: UIViewAutoresizingFlexibleHeight和UIViewAutoresizingFlexibleWidth只有当虚线变成实线的时候才会显示出效果,而 UIViewAutoresizingFlexibleLeftMargin,UIViewAutoresizingFlexibleRightMargin,UIViewAutoresizingFlexibleTopMargin,UIViewAutoresizingFlexibleBottomMargin是虚线显示效果,实线时去掉该效果。自己可以多尝试几遍。
UIViewAutoresizingNone view的frame不会随superview的改变而改变
UIViewAutoresizingFlexibleLeftMargin 自动调整view与superview左边的距离保证右边距离不变
UIViewAutoresizingFlexibleWidth 自动调整view的宽,保证与superView的左右边距不变,左右进行拉伸
UIViewAutoresizingFlexibleRightMargin 自动调整view与superview右边的距离保证左边距不变
UIViewAutoresizingFlexibleTopMargin 自动调整view与superview顶部的距离保证底部距离不变
UIViewAutoresizingFlexibleHeight 自动调整view的高,保证与superView的顶部和底部距离不变,上下可以拉伸
UIViewAutoresizingFlexibleBottomMargin
自动调整view与superview底部部的距离保证顶部距离不变
2. Autoresizing使用场景
下面看一下一些组合的场景使用:
举个栗子:
我要实现这样一个效果:
分享五个按钮平均分配在界面上,如果使用autolayout我们要考虑设置比例,每个的大小等等,这里我们使用Autoresizing就相对便捷了,当然了看个人的习惯了,一般我就是两种布局方式混用,哪种方便适合用哪种。
首先呢,设置一个View在上面添加五个Button就可以了,设置之间的距离,
选择自动调整view的宽,保证与superView的左右边距不变,左右进行拉伸,自动调整view与superview底部部的距离保证顶部距离不变
在单独设置每个按钮的位置和大小,左边距、右边距、下边距按比例调整,
这样就OK了,自己多试几遍了解Autoresizing的使用就可以了,很方便的。