Eine benutzerdefinierte Ansicht befindet sich in IB, indem das UIView-Objekt aus der Bibliothek gezogen wird und der Klassenname auf den Klassennamen der benutzerdefinierten Ansicht gesetzt wird. Diese benutzerdefinierte Ansicht hat eine Unteransicht, die in init?(coder aDecoder: NSCoder)
hinzugefügt wird.Ankerbeschränkung verkleinert Superview, statt Subview zu vergrößern
Wie sollten Ankertyp-Constraints zusammengesetzt werden und wo sollten sie sich befinden, damit die Untersicht _centralLabel in der benutzerdefinierten Ansicht zentral festgelegt wird und die Dimensionen 25% der benutzerdefinierten Dimensionen der benutzerdefinierten Größe entsprechen?
Wenn der Code wie folgt geschrieben:
override func updateConstraints() {
if !_subviewsConstraintsAdded {
_centralLabel.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.25).isActive = true
_centralLabel.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.25).isActive = true
_centralLabel.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true
_centralLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
_subviewsConstraintsAdded = true
}
super.updateConstraints()
}
Das Ergebnis des Codes ist, dass stattdessen die Größe _centralLabel die Einstellung 25% der benutzerdefinierten Ansicht zu sein, wird die benutzerdefinierte Ansicht geschrumpft (0,0) was die Größe von _centralLabel ist, während updateConstraints() aufgerufen wird.