【发布时间】:2018-02-01 12:33:12
【问题描述】:
好的,所以我有一组按钮,我根据分配给它们的文本调整宽度(使用 sizeToFit()) - 这意味着以“StackOverflow”为标题的按钮将比以“Stack”为标题的按钮长作为标题。
我有一个容器 UIView,它是一个设定的宽度,高度是使用(按钮的 numRows * 每个按钮的高度)计算的,所以高度总是正确的。
我需要在容器视图上以编程方式排列这些可变宽度按钮(无约束,使用数学),以便没有一个超出右边缘,这意味着它们或多或少完全填满了容器视图的宽度。我成功地将所有按钮放在容器视图上的 3 行中(不是按宽度,只是按数组顺序),如下所示:
//cont = container view
func organizeHashBtns()
{
var numPerRow = Int(3)
var numRows = Int(hashButtons.count/numPerRow)
var rowsAdded = Int(0)
//just in order at first
while rowsAdded < numRows {
var index = rowsAdded*numPerRow
//self.addSubview(cont)
for i in index...index+3
{
hashButtons[i].center = CGPoint(x: (cont.bounds.width/3) * CGFloat(i), y: cont.bounds.height/2)
cont.addSubview(hashButtons[i])
}
rowsAdded+=1
}
}
但是我不知道如何根据按钮的单独宽度和整个容器的宽度来确定按哪个顺序排列按钮。我怎样才能做到这一点?如何将较长的按钮与较短的按钮分组,以使充满按钮的行的宽度大致相同?
【问题讨论】:
-
您是否尝试过使用
UIStackView? -
StackView - 好点。可能这会对您有所帮助。 stackoverflow.com/questions/30728062/…objective-c和swift都有例子。
-
@brandonscript 我过去尝试过堆栈视图,但没有成功指定 # 行按钮。你能提供一个例子作为答案吗?
标签: ios swift layout uiview size