UIStackView - 具有相对宽度的三个排列的子视图

时间:2016-02-25 19:41:23

标签: ios xcode swift uistackview

我有一个外部UIStackView,使用以下属性调用它outerStackView

outerStackView.axis = .Horizontal
outerStackView.distribution = .Fill
outerStackView.spacing = 10

outerStackView有三个排列的子视图(将它们视为3列),这些视图也恰好是UIStackViews。

我想将三个排列的子视图(列)的宽度设置为outerStackView宽度的相对乘数。

所以我试着这样做:

leftColumnStackView = UIStackView()
middleColumnStackView = UIStackView()
rightColumnStackView = UIStackView()

outerStackView.addArrangedSubview(leftColumnStackView)
outerStackView.addArrangedSubview(middleColumnStackView)
outerStackView.addArrangedSubview(rightColumnStackView)

leftColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.4, constant: 0).active = true
middleColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.4, constant: 0).active = true
rightColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.2, constant: 0).active = true

这会引发一堆自动布局错误。

我如何使这三列UIStackViews与其父视图具有相对宽度?

1 个答案:

答案 0 :(得分:1)

我通过给出左侧和中间列的相对宽度(考虑它们之间的间距)来解决这个问题,而右侧的列只是填充在空间中。

leftColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.38, constant: -20).active = true
middleColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.38, constant: -20).active = true