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

UIStackView - Three arranged subviews with relative widths

我有一个外部 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

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

如何使这三列 UIStackView 相对于它们的父视图具有相对宽度?

我通过给左列和中间列相对宽度(考虑到它们之间的间距)解决了这个问题,右列简单地填充了 space.

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