我正在使用 PureLayout 框架并用 Swift 编写我的 UIView。
我有一个视图,其中包含四个高度不同的按钮。
我添加了约束以使这些按钮等间距,并在视图中垂直居中,并在最后按钮的任一侧添加填充。但是,我不确定如何设置视图的高度/顶部约束,使其与最高按钮的顶部之间有 8.0 点的差距。我可以将约束添加到每个按钮的顶部和底部,以便它们都距离视图边缘 >= 8.0 像素,但这意味着视图可以垂直拉伸,同时仍保持这些约束。直到运行时,我才知道这些按钮中的哪一个是最高的。
我能想到的唯一选择是事先遍历我的按钮并找到存储在变量中的最高按钮,并在制作约束时使用它,但我想知道是否有一种方法可以更简单地使用 PureLayout 来做到这一点,无需遍历所有这些对象。有没有一种方法我可以应用到视图的高度,而不是说“在满足其余约束的同时使这个值尽可能小”之类的方法?
let topOffset = CGFloat(8.0)
let bottomOffset = CGFloat(8.0)
button1.autoConstrainAttribute(.top, to: .top, of: self, withOffset: topOffset, relation: NSLayoutRelation.self.autoConstrainAttribute(.bottom, to: .bottom, of: button1, withOffset: topOffset, relation: NSLayoutRelation.greaterThanOrEqual)
button2.autoConstrainAttribute(.top, to: .top, of: self, withOffset: topOffset, relation: NSLayoutRelation.self.autoConstrainAttribute(.bottom, to: .bottom, of: button2, withOffset: topOffset, relation: NSLayoutRelation.greaterThanOrEqual)
button3.autoConstrainAttribute(.top, to: .top, of: self, withOffset: topOffset, relation: NSLayoutRelation.self.autoConstrainAttribute(.bottom, to: .bottom, of: button3, withOffset: topOffset, relation: NSLayoutRelation.greaterThanOrEqual)
button4.autoConstrainAttribute(.top, to: .top, of: self, withOffset: topOffset, relation: NSLayoutRelation.self.autoConstrainAttribute(.bottom, to: .bottom, of: button4, withOffset: topOffset, relation: NSLayoutRelation.greaterThanOrEqual)
//MISSING: Somehow make self's height as small as possible
我为草率道歉,但这里是我的目标的形象。忽略水平间距。矩形是视图,圆圈是按钮,大小不一。视图需要在这些按钮中最高的按钮上方/下方有 8.0 点的填充,即本例中的蓝色按钮。它们都在视图中垂直居中,我不知道它们的大小,直到我在实例化视图时动态设置图像。