修复UIStackView中元素的宽度

Pet*_*kov 19 ios swift uistackview

UIStackView以编程方式创建s并将它们添加到UIStackView在Storyboard中创建的父级.子堆栈视图是水平的,带有2个标签.我需要修复第二个宽度UILabel并使第一个UILabel填充剩余空间.

现在我有这个:

之前

我想要这个:

后

我生成子堆栈视图的代码:

@IBOutlet weak var parentStackView: UIStackView!

func addStackViewsToParentStackView(params: [String: Float]) {
    for (name, value) in params {
        let parameterNameLabel = UILabel() // first label
        parameterNameLabel.text = name
        let parameterValueLabel = UILabel() // second label
        parameterValueLabel.text = value.description
        parameterValueLabel.frame.size.width = 80.0 // I've tried to fix width, but it does't help

        let childStackView = UIStackView(arrangedSubviews: [parameterNameLabel, parameterValueLabel])
        childStackView.axis = .Horizontal
        childStackView.distribution = .FillProportionally
        childStackView.alignment = .Fill
        childStackView.spacing = 5
        childStackView.translatesAutoresizingMaskIntoConstraints = true
        parentStackView.addArrangedSubview(childStackView)
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Kha*_*yen 38

只需在标签上加上宽度约束即可.

parameterValueLabel.widthAnchor.constraint(equalToConstant: 80).isActive = true
Run Code Online (Sandbox Code Playgroud)