Ich habe eine Bildansicht, in der ich abgerundete Ecken implementiere, indem ich Folgendes in meiner Unterklasse überschreibe:
%Vor%Dies funktioniert hervorragend für die anfängliche Anzeige des Bildes, aber wenn sich die Größe des Bildes aufgrund der Gerätedrehung oder eines anderen Mechanismus ändert, wird diese Methode nicht aufgerufen, um die Größenänderung zu implementieren.
Ich verwende Autolayout, und ich möchte wissen, welche Methode von UIView (und damit UIImageView) aufgerufen wird, wenn meine Constraints die Größe der Ansicht ändern, sodass ich meinen Eckenradius immer neu berechnen kann, wenn diese Größenänderung stattfindet. Meine (scheinbar falsche) Annahme war, dass das automatische Layoutsystem setFrame:
aufgerufen hat, um Ansichten nach Bedarf zu verschieben / zu skalieren.
Aus den Dokumenten in updateConstraints
:
Benutzerdefinierte Ansichten, die Constraints selbst einrichten, sollten dies durch Überschreiben dieser Methode tun
....
Bevor das Layout ausgeführt wird, wird Ihre Implementierung von updateConstraints aufgerufen, mit der Sie überprüfen können, ob alle notwendigen Einschränkungen für Ihren Inhalt zu einem Zeitpunkt vorhanden sind, an dem sich die Eigenschaften Ihrer benutzerdefinierten Ansicht nicht ändern.
Oder aus den Dokumenten zu layoutSubviews
:
Sie sollten diese Methode nur überschreiben, wenn das Autoresizing- und Constraint-basierte Verhalten der Subviews nicht das von Ihnen gewünschte Verhalten bietet. Sie können Ihre Implementierung verwenden, um die Rahmenrechtecke Ihrer Unteransichten direkt festzulegen.
Wenn Sie dies jedoch bei Rotationsänderungen tun müssen, überprüfen Sie
willTransitionToTraitCollection:withTransitionCoordinator:
Implementierer dieser Methode können damit die Schnittstelle basierend auf den Werten im newCollection-Parameter anpassen. Eine häufige Verwendung dieser Methode besteht darin, Änderungen am übergeordneten Präsentationsstil vorzunehmen, wenn sich die aktuelle Größenklasse ändert.
Tags und Links ios resize uiview frame autolayout