我有一个外部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与其父视图具有相对宽度?
答案 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