UIStackView
2015-10-27 本文已影响1156人
Girl_iOS
iOS9在布局方面最大的变化就是引入了UIStackView.那么它是什么呢?简单讲就是一个容器里可以包含多个控件,分为水平和竖直排列.我们只需约束这个容器即可,而不用一个个地去约束容器内的控件.而且这个容器是可以嵌套的.如果你接触过Watch开发,UIStackView有点像其中的Group控件.那就随我去瞅瞅它是什么吧!
首先选中三个UIButton:
![](https://img.haomeiwen.com/i49368/d075101ea0308b6c.png)
![](https://img.haomeiwen.com/i49368/639a5a3992ab6d44.png)
然后点一下约束左边的那个有箭头的东西:
![](https://img.haomeiwen.com/i49368/3082e940bfa6126d.png)
ok,已经很轻松的完成了一个UIStackView!
![](https://img.haomeiwen.com/i49368/c61e1277450d7b10.png)
然后只要约束一下这个UIStackView就可以了.
![](https://img.haomeiwen.com/i49368/cff09a2d3832d365.png)
我们可以看到这个UIStackView有几个属性:三个按钮水平并排,可以看到Axis的属性为Horizontal,即轴线属性为水平.Distribution属性为Equal Spacing即相隔相同距离.All Done.很容易就完成了这三个按钮的布局.而如果按照以往,你可能需要做很多约束:(
![](https://img.haomeiwen.com/i49368/441b5ea5e5d9b952.png)
关于Alignment的属性,水平和竖直时有区别:
![](https://img.haomeiwen.com/i49368/5a19edc827b873d1.png)
水平时各个属性的效果:
![](https://img.haomeiwen.com/i49368/3b3a606bc5c4336b.png)
![](https://img.haomeiwen.com/i49368/85e720ea8122c833.png)
竖直时各个属性的效果:
![](https://img.haomeiwen.com/i49368/4d1048e62f708531.png)
AutoLayout还有两个新物件layout anchors和layout guides
- Layout anchors
当我们有两个UILabel,bottomLabel和topLabel,你想把bottomLabel放在topLabel右边间隔8 points的位置,以前你需要添加如下约束:
let constraint = NSLayoutConstraint(
item: topLabel,
attribute: .Bottom,
relatedBy: .Equal,
toItem: bottomLabel,
attribute: .Top,
multiplier: 1,
constant: 8
)
现在可以简化为:
let constraint = topLabel.bottomAnchor.constraintEqualToAnchor(
bottomLabel.topAnchor, constant: 8)