我有一個編程視圖,裏面有一個標籤,我固定在navBar的底部。標籤內部會有動態文本,如果文本的高度變得更小,我希望標籤所在的視圖至少爲64點或更大。Swift iOS - 如何設置UIView的高度錨點<=標籤的內在文本大小? 'NSLayoutConstraint'不能轉換爲'Bool'
此標籤中文本的固有尺寸將視圖設置在明顯的高度。
setViewAndLabel(dynamicText: "Unknown Error\nPlease try your request again\Error: 123")
然而這個文本的內在尺寸使得高度小:
setViewAndLabel(dynamicText: "Message Deleted!")
的留言刪除!應該更多的線沿線:
我使用了一些回報鍵來設置它這樣的,但我不認爲這是去,因爲不同的信息會產生正確的方法:
setViewAndLabel(dynamicText: "\nMessage Deleted!\n")
我也試過:
if myView.heightAnchor.constraint(lessThanOrEqualToConstant: 64){
myView.heightAnchor.constraint(equalToConstant: 64).isActive = true
}
但我得到的錯誤:
'NSLayoutConstraint' is not convertible to 'Bool'
什麼是最好的方式來設置視圖的高度標籤是在一個最小的高度?
var myLabel: UILabel(){
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = UIColor.white
label.font = UIFont(name: "Helvetica-Regular", size: 19)
label.numberOfLines = 0
label.sizeToFit()
label.textAlignment = .center
return label
}
let myView:UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated){
setViewAndLabel(dynamicText: //some text will get set here)
}
func setViewAndLabel(dynamicText: String){
view.addSubView(myView)
myView.backgroundColor = UIColor.red
myView.topAnchor.constraint(equalTo: view.topAnchor, constant: 64).isActive = true
View.widthAnchor.constraint(equalTo: view.widthAnchor, constant: 0).isActive = true
myView.addSubView(myLabel)
myLabel.text = dynamicText
myLabel.topAnchor.constraint(equalTo: myView.topAnchor, constant: 0).isActive = true
myLabel.widthAnchor.constraint(equalTo: myView.widthAnchor, constant: 0).isActive = true
myView.bottomAnchor.constraint(equalTo: myLabel.bottomAnchor, constant: 0).isActive = true
//this if statement doesn't work
if myView.heightAnchor.constraint(lessThanOrEqualToConstant: 64){
viewForErrorLabel.heightAnchor.constraint(equalToConstant: 64).isActive = true
}
}
如果您希望它至少* 64,您爲什麼使用「小於或等於」約束?如果你總是想要64,或者使用「等於」約束,或者如果你想要至少64,那麼使用「大於或等於」。 – Paulw11
@ Paulw11謝謝指出。儘管這不是問題。我忘了添加它對我的問題所說的錯誤。我正在更新它。 –
@ Paulw11謝謝你的建議。安德烈回答了這個問題,答案正是你所說的那樣:) –