0

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.

Antwort

0

Das fehlende Stück war, dass:

_centralLabel.translatesAutoresizingMaskIntoConstraints = false 

, die irgendwo liegen sollte nach programmatisch die Subview mit dieser Linie Instanziierung:

_centralLabel = UILabel() 

Nach dieser Korrektur der _centralLabel subview vergrößert hat und bewegt das Zentrum der Aussicht, während der Blick selbst in seiner ursprünglichen Größe, Form und Position blieb.

Verwandte Themen