好的,我有一个按钮数组,我根据分配给它们的文本来调整宽度(使用sizeToFit()) -这意味着标题为"StackOverflow“的按钮会比标题为"Stack”的按钮长。
我有一个容器高度,它是设置的宽度,高度是用(numRows of button*每个按钮的高度)计算的,所以高度总是正确的。
我需要在容器视图上以编程方式排列这些宽度可变的按钮(没有约束,使用数学方法),这样它们就不会超出右边缘,这意味着它们或多或少准确地填满了容器视图的宽度。我成功地将所有按钮放在容器视图的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
}
}但是,我不知道如何根据按钮的宽度和整个容器的宽度来确定按钮的排列顺序。我该怎么做呢?如何将较长的按钮与较短的按钮组合在一起,以使充满按钮的各行都具有相同的宽度?
发布于 2017-08-26 01:49:24
开始使用UIStackView实际上是件轻而易举的事情。我所展示的就好像你是在Interface Builder中构建的,但是你可以很容易地在代码中复制相同的行为。诀窍在于垂直>水平视图的嵌套,并将内容分布设置为“等间距”。


https://stackoverflow.com/questions/45847840
复制相似问题