У меня есть три UILabels
внутри UIStackView
.У одного из них есть многострочный (последний), а у других только одна строка.Я хочу, чтобы они были центрированы внутри UIStackView
, чтобы верхние и нижние пространства могли быть динамическими.Что я делаю неправильно?
headingLabel.translatesAutoresizingMaskIntoConstraints = false
headingLabel.textAlignment = .center
subHeadingLabel.translatesAutoresizingMaskIntoConstraints = false
subHeadingLabel.textAlignment = .center
subHeadingLabel.numberOfLines = 0
bodyLabel.translatesAutoresizingMaskIntoConstraints = false
bodyLabel.textAlignment = .center
bodyLabel.numberOfLines = 0
bodyLabel.text = "My very very long text \n to make it multiline"
textStackView.axis = .vertical
textStackView.distribution = .fillProportionally
textStackView.alignment = .center
textStackView.translatesAutoresizingMaskIntoConstraints = false
textStackView.addArrangedSubview(headingLabel)
textStackView.addArrangedSubview(subHeadingLabel)
textStackView.addArrangedSubview(bodyLabel)
Как это видно сейчас:
Как и должно быть:
РЕДАКТИРОВАТЬ: Я также пытаюсь сделать с fillEqually, но это ничего не меняет.Я также установил верхний и нижний якоря UIStackView.Здесь я хочу добиться того, чтобы, например, UIStackView имел высоту 100, а все три метки имели высоту 40. Эти 60 дополнительных мест должны быть равномерно распределены, как 30 - 30 сверху и снизу.
Ограничения UIStackView
myStackView.anchor(contentImageView.bottomAnchor, left: self.view.leftAnchor, bottom: self.view.bottomAnchor, right: self.view.rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 0, heightConstant: 0)
Одно решение: Я решаю это, помещая UIStackView в UIView и не давая высотуUIStackView.Просто центр X и Y якоря.Это решит мою проблему, но я не уверен, что это правильное решение.