web-dev-qa-db-ja.com

UIStackViewの要素の幅を修正

プログラムでUIStackViewsを作成し、それらをStoryboardで作成された親UIStackViewに追加します。子スタックビューは水平で、2つのラベルがあります。 2番目のUILabelの幅を修正し、最初のUILabelで残りのスペースを埋める必要があります。

今、私はこれを持っています:

Before

そして、私はこれが欲しい:

After

子スタックビューを生成するための私のコード:

@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)
    }
}

助けてくれてありがとう!

19
Peter Tretyakov

ラベルに幅の制限をかけるだけです。

parameterValueLabel.widthAnchor.constraint(equalToConstant: 80).isActive = true
36
Khanh Nguyen