谈谈使用AutoLayout如何实现N等分布局

关于Autolayout

自从Autolayout引入以来,受到越来越多开发者的追捧,苹果官方也推荐开发者尽量使用Autolayout来布局UI界面,本人在日常的开发中能用Autolayout实现的绝不用代码,不方便实现的也想着法子实现,可以这么说,Autolayout对于开发效率的提升不是一点两点,

如果你对Autolayout还不了解或还未使用,可以阅读这篇博文寒哥细谈之AutoLayout全解.

总的来说只要在开发中多实践还是比较容易掌握的.闲言少叙,接下来进入主题.
在开发中我们可能会遇到等分布局的需求,这里我主要介绍两种方法,如果还有其他更好的方法,欢迎交流.

  1. 使用约束,设置Width属性的值
  2. 使用UIStackView(最低支持iOS9)
一.使用约束

1.1 在一个View中放置一个View


谈谈使用AutoLayout如何实现N等分布局_第1张图片
image.png

1.2 设置View的上下左边距

谈谈使用AutoLayout如何实现N等分布局_第2张图片
image.png

1.3当然这些约束还是不够的,接下来设置View的宽度

谈谈使用AutoLayout如何实现N等分布局_第3张图片
image.png

选中蓝色的子View,按住control键,拖向父View,会出现上图的黑色框,选择Equal Widths,这步操作是让子View的宽度和父View宽度相等,但这不是我们想要的,接下来是最关键的一步
1.4 设置约束Width Multiplier的值

谈谈使用AutoLayout如何实现N等分布局_第4张图片
image.png

1.5 这时候第一个View的宽度为父View宽度的1/3,其他两个View可以采用上面的方法设置,也可以设置其宽度和蓝色View的宽度相等,完成后是这样子的,是不是很简单.

谈谈使用AutoLayout如何实现N等分布局_第5张图片
image.png
二.使用UIStackView
关于UIStackView

UIStackView是iOS9 引入的一个布局神器,StackView提供了横向和纵向的线性布局功能。当多个View被嵌入到StackView,你不再需要去为这写个View去定义布局约束,StackView会自动对这些子视图进行布局处理,是不是很神奇,那就让我们开始接下来的神奇之旅吧.

想了解更多UIStackView的信息,可以参考这篇文章IOS9 Xcode7 下的布局神器 Stack Views

还是接上面的例子,咱们展示一下使用StackView如何实现等分布局
2.1 添加三个View

谈谈使用AutoLayout如何实现N等分布局_第6张图片
image.png

2.2 选中三个View,点击右下角类似于向下箭头的按钮

谈谈使用AutoLayout如何实现N等分布局_第7张图片
image.png

点击之后效果是这样的

谈谈使用AutoLayout如何实现N等分布局_第8张图片
image.png

三个View手牵手在一起了,但是并没有相对于父View实现等分,其实也不难理解StackView虽然能实现嵌入子View线性等分,但也必须也指定StackView相对于父View的约束,不然StackView不知道以谁为参照物,接下来设置StackView相对于父View的约束

谈谈使用AutoLayout如何实现N等分布局_第9张图片
image.png
谈谈使用AutoLayout如何实现N等分布局_第10张图片
image.png

这时候三个子View 并没有实现等分,这里需要介绍一下StackView的四个属性

  1. Axis:子控件的布局方向
  2. Alignment:子控件对齐方式
  3. Distrubution:子控件的大小如何计算
  4. spacing:子控件的最小间距

只要设置一下这四个属性,等分布局将展现在眼前

谈谈使用AutoLayout如何实现N等分布局_第11张图片
image.png

大功告成.
需要注意的是UIStackView是iOS 9才引入的,因此在使用的时候要注意iOS9之前系统的兼容.

你可能感兴趣的:(谈谈使用AutoLayout如何实现N等分布局)