【问题标题】:Swift: how to arrange buttons according to width? All equal spacing apart?Swift:如何根据宽度排列按钮?全部等间距?
【发布时间】: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


【解决方案1】:

UIStackView 实际上很容易开始使用。我将其显示为好像您在 Interface Builder 中构建它一样,但您可以轻松地在代码中复制相同的行为。诀窍在于垂直 > 水平视图的嵌套,并将内容分布设置为“等间距”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2015-08-06
    • 2017-09-11
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多