假设您已经创建了两个子视图并处理了它们的大小和垂直约束,那么您可以执行以下操作:
// create three layout guides
let layoutGuides = (0 ..< 3).map { _ in UILayoutGuide() }
// add them to your view
layoutGuides.forEach { view.addLayoutGuide($0) }
// create dictionary for VFL
let views = ["layoutGuide0": layoutGuides[0], "layoutGuide1": layoutGuides[1], "layoutGuide2": layoutGuides[2], "subview0": subviews[0], "subview1": subviews[1]]
// define horizontal constraints where three layout guides are the same width
let vfl = "H:|[layoutGuide0][subview0][layoutGuide1(==layoutGuide0)][subview1][layoutGuide2(==layoutGuide0)]|"
let constraints = NSLayoutConstraint.constraints(withVisualFormat: vfl, metrics: nil, views: views)
NSLayoutConstraint.activate(constraints)
UIView
对象,其alpha为0),并将它们的相应宽度保持相等的约束。然后将这五个视图(两个子视图加上三个间隔器视图)放入堆栈视图中(或者,如果您是受虐狂,则绕过堆栈视图,并在这五个子视图之间添加六个前导/尾随约束),就可以实现两个均匀间隔的子视图(在这三个不可见的“间隔器”视图之间)。alpha
设置为0(使它们不可见)时,其净效果如下: