好的,所以我有一个按钮数组,我根据分配给它们的文本调整宽度(使用sizeToFit()) - 这意味着一个带有“StackOverflow”的按钮,因为它的标题将比带有“Stack”的按钮长一个作为标题。
我有一个容器UIView,它是一个设定的宽度,高度是用(按钮的数量*每个按钮的高度)计算的,所以高度始终是正确的。
我需要以编程方式在容器视图上排列这些可变宽度按钮(没有约束,使用数学),这样就不会在右边缘上运行,这意味着它们或多或少地完全填满了容器视图的宽度。我成功地将所有按钮放在容器视图上的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
}
}
但是我无法弄清楚如何根据整个容器的宽度和宽度确定按钮的排列顺序。我怎样才能做到这一点?如何将较长的按钮与较短的按钮分组,以使满按钮的行全部大小相同?