[英]Center Vertically Three UILabels inside UIStackView
我有三個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錨定在中心。 它解決了我的問題,但是我不確定這是否是正確的解決方案。
從UIViewController
的視圖中,確保UIStackView
底部約束應大於等於零。 因此, UIStackView
高度將根據其中的內容而增加。
嘗試這個。
let myStackView = UIStackView()
view.addSubview(myStackView)
myStackView.translatesAutoresizingMaskIntoConstraints = false
myStackView.topAnchor.constraint(greaterThanOrEqualTo: view.topAnchor, constant: 0.0).isActive = true
myStackView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0.0).isActive = true
myStackView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0.0).isActive = true
myStackView.bottomAnchor.constraint(greaterThanOrEqualTo: view.bottomAnchor, constant: 0.0).isActive = true
myStackView.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0.0).isActive = true
myStackView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0.0).isActive = true
我在這里想要實現的是,例如,UIStackView的高度為100,而所有三個標簽的高度為40。應該將60個以上的空間平均分配,例如30-30分配到底部。
這不是堆棧視圖的工作方式。 如果要三個高度為40的標簽居中,則只需執行此操作,而無需堆棧視圖。 或將堆棧視圖高度設置為40並將其居中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.