ios - Swift:如何根据宽度排列按钮?间距都相等吗?

标签 ios swift layout uiview size

好的,所以我有一个按钮数组,根据分配给它们的文本调整宽度大小(使用 sizeToFit()) - 这意味着标题为“StackOverflow”的按钮会比标题为“Stack”的按钮长如标题。

我有一个容器 UIView,它的宽度是固定的,高度是使用(按钮的行数 * 每个按钮的高度)计算的,因此高度始终是正确的。

我需要以编程方式在容器 View 上排列这些可变宽度按钮(没有约束,使用数学),以便没有一个按钮超出右边缘,这意味着它们或多或少准确地填充了容器 View 的宽度。我成功地将所有按钮放入容器 View 上的 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 实际上上手非常简单。我所展示的就像您在 Interface Builder 中构建它一样,但您可以轻松地在代码中复制相同的行为。诀窍在于垂直 > 水平 View 的嵌套,并将内容分布设置为“等间距”。

enter image description here

关于ios - Swift:如何根据宽度排列按钮?间距都相等吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45847840/

相关文章:

ios - 如何将用户输入发送到指定的电子邮件?

ios - 连接前识别CBPeripheral的类型

swift - 我可以更改打印机 View Controller 中的份数吗?如果是的话怎么办?

java - 如何将 JLabel 添加到 JEditorPane?

android - 如何在不调用 bringToFront() 的情况下将 View 置于最前面?

html - 在其他登录链接旁边设置 Facebook 登录按钮的样式

ios - SpriteKit 异常 'PKPhysicsBody' 崩溃

ios - 从两个不同的 nibs Swift 附加 tableview 自定义单元格

ios - List 对象的 SwiftUI 分页

ios - 在 Swift 中按顺序播放音频文件,其中第二个声音重复播放