所以我有一個復選框和一個標簽,我將它們放在一個 UIView 中,這樣我以后可以使用復選框和標簽作為一個組件,對于其他專案,問題是我希望視圖根據更改大小(特別是寬度)標簽文本長度。到目前為止,我似乎只能得到這個。紅色部分是包含 Checkbox 和標簽的 UIStackView,藍色部分是包含 stackView 的 UIView 類。我可以做些什么來修改視圖大小以匹配 Stackviews 大小,所以如果標簽變短,視圖也會變短。提前致謝!

uj5u.com熱心網友回復:
您需要使用約束。在這種情況下,您希望 UIStackView 具有約束錨點,每個約束錨點對于藍色 UIView 的每一側都設定為零 - 這將用 UIStackView 填充藍色 UIView。
假設您希望復選框保持相同大小,您可以設定寬度和高度約束,UIStackView 左邊緣的前導約束為 0。
最后,為 UIStackView 的頂部和底部邊緣提供 0 的標簽約束,并為前導和尾隨約束提供一些數值,以便在其兩側(遠離復選框和右邊緣)都有一些填充。
UIStackView 約束
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.topAnchor.constraint(equalTo: blueView.topAnchor, constant: 0).isActive = true
stackView.bottomAnchor.constraint(equalTo: blueView.bottomAnchor, constant: 0).isActive = true
stackView.leadingAnchor.constraint(equalTo: blueView.leadingAnchor, constant: 0).isActive = true
stackView.trailingAnchor.constraint(equalTo: blueView.trailingAnchor, constant: 0).isActive = true
復選框約束
checkBox.translatesAutoresizingMaskIntoConstraints = false
checkBox.topAnchor.constraint(equalTo: stackView.topAnchor, constant: 0).isActive = true
checkBox.leadingAnchor.constraint(equalTo: stackView.leadingAnchor, constant: 0).isActive = true
checkBox.heightAnchor.constraint(equalToConstant: given_height).isActive = true
checkBox.widthAnchor.constraint(equalToConstant: given_width).isActive = true
標簽約束
label.translatesAutoresizingMaskIntoConstraints = false
label.topAnchor.constraint(equalTo: stackView.topAnchor, constant: 0).isActive = true
label.bottomAnchor.constraint(equalTo: stackView.bottomAnchor, constant: 0).isActive = true
label.leadingAnchor.constraint(equalTo: checkBox.trailingAnchor, constant: given_space).isActive = true
label.trailingAnchor.constraint(equalTo: stackView.trailingAnchor, constant: 0).isActive = true
為了使視圖的高度適應標簽(如果其關聯的文本長于一行),然后添加以下代碼行:
label.numberOfLines = 0
?? 請注意,你的 blueView 也需要約束。
您可以在此處找到有關約束的更多資訊。
或者,如果您更喜歡使用情節提要,則不必以編程方式添加約束 - 請參閱本教程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421741.html
標籤:
上一篇:代碼適用于Xcode12.5但不適用于Xcode12.4
下一篇:結合從模型到視圖模型的轉換會出現錯誤“在運行.eraseToAnyPublisher()時,運算式型別不明確,沒有更多背景關系
