本文列举了一些Auto Layout需要处理的约束行为。
Single View
对比设计如下的布局效果时:
左边的Constraint为:
1 | Red View.Leading = Superview.LeadingMargin |
注意:系统会自动设置RootView的Margin,左右的间距为16或者20,取决于设备,上下为0。对于SuperView和SubView,默认间距为20,而对于同一层级的View,默认间距为8。
左边这样的约束组合,没办法自动适配有StatusBar和没有StatusBar的情况,因为上下间距固定为20。
右边的Constraint为:
1 | Blue View.Leading = Superview.LeadingMargin |
这样,可以保证在Bar时,上下间距为8,没有Bar时,为20,优先级为750较低,优先满足其他的Constraints。
Two Views with Complex Widths
当要实现,左边宽度至少为150,右边的宽度尽可能是左边的两倍时:
建立Constraints如下:
1 | Blue View.Leading = Superview.LeadingMargin |
当宽度超过458(150 + 300 + 8)时,可以满足右边的宽度为左边两倍,小于458时,也能保证左边的宽度至少150,右边的尽可能接近两倍。