Ich habe eine programmatische Ansicht mit einem Etikett darin, das ich an den unteren Rand der navBar hefte. Es wird dynamischen Text innerhalb des Labels geben und ich möchte, dass das Label mindestens 64 Punkte groß ist, wenn die Höhe des Textes es verkleinert.Swift iOS - Wie setze ich UIView's Height Anchor <= auf die intrinsische Textgröße eines Labels? "NSLayoutConstraint" ist nicht in "Bool" umwandelbar.
Die tatsächliche Größe des Textes von dieser Beschriftung legt die Ansicht in einer auffälligen Höhe fest.
setViewAndLabel(dynamicText: "Unknown Error\nPlease try your request again\Error: 123")
jedoch die innere Größe dieses Textes die Höhe zu klein macht:
setViewAndLabel(dynamicText: "Message Deleted!")
Die Nachricht gelöscht! sollte entlang der Linien von mehr sein:
habe ich einige Rückkehr Schlüssel setzen es so, aber ich glaube nicht, dass der richtige Weg, wird zu gehen, weil verschiedene Nachrichten generiert erhalten:
setViewAndLabel(dynamicText: "\nMessage Deleted!\n")
ich auch versucht:
if myView.heightAnchor.constraint(lessThanOrEqualToConstant: 64){
myView.heightAnchor.constraint(equalToConstant: 64).isActive = true
}
Aber ich bekomme die Fehlermeldung:
'NSLayoutConstraint' is not convertible to 'Bool'
Wie wird die Höhe für die Ansicht, in der sich das Etikett befindet, am besten auf eine Mindesthöhe eingestellt?
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
}
}
Warum haben Sie die Einschränkung "weniger als oder gleich" verwendet, wenn Sie * mindestens * 64 haben möchten? Entweder verwenden Sie eine "gleiche" Einschränkung, wenn Sie immer 64 oder ein "größer als oder gleich" wollen, wenn Sie mindestens 64 wollen. – Paulw11
@ Paulw11 danke für das hinweisend. Das ist aber nicht das Problem. Ich habe vergessen, den Fehler zu meiner Frage hinzuzufügen. Ich aktualisiere es jetzt. –
@ Paulw11 danke für den Rat. Andre beantwortete die Frage und die Antwort war genau das, was du gesagt hast :) –