我想让未知数量的按钮水平均匀地分布在屏幕上。我想知道我能不能在彼此的基础上创建他们的间距。例如,下面的代码可以工作吗?
let button1 = UIButton()
let button2 = UIButton()
superview.addSubview(button1)
superview.addSubview(button2)
button1.snp_makeConstraints { (make) -> Void in
make.height.equalTo(100)
make.top.equalTo(50)
make.left.equalTo(superview.snp.left)
make.right.equalTo(button2.snp.right)
make.width.lessThanOrEqualToSuperview()
}
button2.snp_makeConstraints { (make) -> Void in
make.width.lessThanOrEqualToSuperview()
make.height.equalTo(100)
make.top.equalTo(50)
make.left.equalTo(button1.snp.left)
make.right.equalTo(superview.snp.right)
}
发布于 2017-02-23 23:26:41
在这种情况下,您实际上应该使用具有水平轴的UIStackView
。
也就是说,如果您想使用SnapKit,有多种方法可以做到这一点。我建议是这样的:
let count = 3 // or buttons.count if you have an array of buttons
button1.snp.makeConstraints { make in
make.width.equalToSuperview().multipliedBy(1.0 / count)
make.leading.equalToSuperview()
make.top.equalToSuperview().offset(50) // or whatever
make.height.equalTo(100)
}
button2.snp.makeConstraints { make in
make.width.top.height.equalTo(button1)
make.leading.equalTo(button1.snp.trailing)
}
button3.snp.makeConstraints { make in
make.width.top.height.equalTo(button1)
make.leading.equalTo(button2.snp.trailing)
make.trailing.equalToSuperview()
}
请注意,我使用的是leading
和trailing
,而不是left
和right
。这是一个很好的习惯,以防您必须为从右到左的语言进行本地化。然后,您的按钮将按照用户设备的自然顺序进行布局。
https://stackoverflow.com/questions/42427967
复制