关于Autolayout
自从Autolayout引入以来,受到越来越多开发者的追捧,苹果官方也推荐开发者尽量使用Autolayout来布局UI界面,本人在日常的开发中能用Autolayout实现的绝不用代码,不方便实现的也想着法子实现,可以这么说,Autolayout对于开发效率的提升不是一点两点,
如果你对Autolayout还不了解或还未使用,可以阅读这篇博文寒哥细谈之AutoLayout全解.
总的来说只要在开发中多实践还是比较容易掌握的.闲言少叙,接下来进入主题.
在开发中我们可能会遇到等分布局的需求,这里我主要介绍两种方法,如果还有其他更好的方法,欢迎交流.
- 使用约束,设置Width属性的值
- 使用UIStackView(最低支持iOS9)
一.使用约束
1.1 在一个View中放置一个View
1.2 设置View的上下左边距
1.3当然这些约束还是不够的,接下来设置View的宽度
选中蓝色的子View,按住control键,拖向父View,会出现上图的黑色框,选择Equal Widths,这步操作是让子View的宽度和父View宽度相等,但这不是我们想要的,接下来是最关键的一步
1.4 设置约束Width Multiplier的值
1.5 这时候第一个View的宽度为父View宽度的1/3,其他两个View可以采用上面的方法设置,也可以设置其宽度和蓝色View的宽度相等,完成后是这样子的,是不是很简单.
二.使用UIStackView
关于UIStackView
UIStackView是iOS9 引入的一个布局神器,StackView提供了横向和纵向的线性布局功能。当多个View被嵌入到StackView,你不再需要去为这写个View去定义布局约束,StackView会自动对这些子视图进行布局处理,是不是很神奇,那就让我们开始接下来的神奇之旅吧.
想了解更多UIStackView的信息,可以参考这篇文章IOS9 Xcode7 下的布局神器 Stack Views
还是接上面的例子,咱们展示一下使用StackView如何实现等分布局
2.1 添加三个View
2.2 选中三个View,点击右下角类似于向下箭头的按钮
点击之后效果是这样的
三个View手牵手在一起了,但是并没有相对于父View实现等分,其实也不难理解StackView虽然能实现嵌入子View线性等分,但也必须也指定StackView相对于父View的约束,不然StackView不知道以谁为参照物,接下来设置StackView相对于父View的约束
这时候三个子View 并没有实现等分,这里需要介绍一下StackView的四个属性
- Axis:子控件的布局方向
- Alignment:子控件对齐方式
- Distrubution:子控件的大小如何计算
- spacing:子控件的最小间距
只要设置一下这四个属性,等分布局将展现在眼前
大功告成.
需要注意的是UIStackView是iOS 9才引入的,因此在使用的时候要注意iOS9之前系统的兼容.