StackView

时间:2017-04-28 04:45:09

标签: ios xcode uistackview

我正在开发实现自定义控件iOS教程(我会链接它,但我不允许使用两个以上的链接)。

我正处于StackView中生成5个按钮的位置。我为每个按钮实现了这些约束:

button.translatesAutoresizingMaskIntoConstraints = false
button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true

我完全按照指定输入了所有代码,但是当我运行应用程序时,按钮垂直和水平填充堆栈视图:

enter image description here

如果我将StackView的对齐属性设置为Top,我可以阻止按钮垂直拉伸,但最后一个按钮仍然是水平拉伸的:

enter image description here

我尝试了许多不同的方法来防止最后一个按钮被拉伸无济于事。在控制台中,我看到大小限制被覆盖,但我无法弄清楚是什么。

我希望这些按钮能够在StackView中保持指定的高度和宽度(44)。关于如何做到这一点的任何想法?如果需要,我可以提供更多信息。

3 个答案:

答案 0 :(得分:2)

试试这个工作正常。

a = [
        [5,4,8,4,9,8],
        [3,-2,-1,-1,3,-2,0]
    ]

for aa in a:
    print genSet(aa)

答案 1 :(得分:0)

我遇到了类似的问题,但是所选答案对我不起作用。我可以通过将对齐方式设置为Leading并将对齐方式设置为equalSpacing来解决此问题:

private func setupButtons() {
    // My Fix
    self.alignment = .leading
    self.distribution = .equalSpacing

    for _ in 0..<5 {
        let button = UIButton()
        button.backgroundColor = UIColor.red
        button.translatesAutoresizingMaskIntoConstraints = false
        button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
        button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true
        button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(button:)), for: .touchUpInside)
        addArrangedSubview(button)
    }
}

或通过IB:

enter image description here

答案 2 :(得分:-3)

如果你按照手册

,一切都会好转