簡體   English   中英

在UIStackView中垂直居中放置三個UILabel

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM