假设如今要在某个视图(view)中放置三个子视图(subviews)。其中两个子视图放置在上方,第三个视图紧挨着它们放到下方。不过上方的两个视图高度不定,而且你不知道哪一个更高一些。如今要求咱们使用自动布局(Auto Layout)来控制下方视图和上方视图之间间距至少 10 单位像素。github
咱们该如何实现呢?实现技巧是使用不等式约束条件 (inequality) 以及设置约束优先级 (priority)。相关约束以下:swift
// 注意约束使用不等式 >=,以及设置优先级 leftViewConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:[red(50)]-(>=10)-[green]", options: [], metrics: nil, views: leftViews) leftViewConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:[blue(100)]-(>=10)-[green]", options: [], metrics: nil, views: leftViews) leftViewConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:[blue(100)]-(<=10@999)-[green]", options: [], metrics: nil, views: leftViews)
上方两个视图与底部视图的最小间距不能小于 10(译者注:这里约束优先级默认是 1000)。此外蓝色视图与底部视图的最大间距不得大于 10 ,其优先级为 999。less
就是这样!你能够看到以下方截图所示的结果。左侧图片中,蓝色视图的高度为 100 单位像素,红色视图高度为 50 单位像素。 右侧图片则刚刚相反。dom
这里向你提供完整代码的 playground 下载。布局
译者注:你能够在下载的 playground 下方键入 view 属性,而后在右侧栏点击 Quick Look,也就是那个眼睛,就能看到如上所示的截图了!ui
本文由 SwiftGG 翻译组翻译,已经得到做者翻译受权,最新文章请访问 http://swift.gg。spa