Gibt es ein UIView-Größenänderungsereignis?
Habe ich eine Ansicht, die Zeilen und Spalten des imageviews.
Wenn diese Ansicht geändert wird, muss ich neu anordnen, die imageviews Positionen.
Diese Ansicht ist eine Untersicht einer anderen Ansicht wird geändert.
Gibt es eine Möglichkeit, zu erkennen, Wann diese Ansicht wird in der Größe verändert?
InformationsquelleAutor der Frage 40-Love | 2010-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Uli unten kommentiert, die richtige Art und Weise zu tun, es ist überschreiben
layoutSubviews
- und layout-die imageViews es.Wenn, aus irgendeinem Grund, Sie können nicht Unterklasse und überschreiben
layoutSubviews
beobachtenbounds
funktionieren sollte, selbst wenn er irgendwie schmutzig. Noch schlimmer, es ist ein Risiko mit dem beobachten - Apple übernimmt keine Garantie für KVO funktioniert auf UIKit-Klassen. Lesen Sie die Diskussion mit Apple-Ingenieur hier: Wann wird ein Objekt zugeordnet freigegeben?original Antwort:
Können Sie Schlüssel-Wert-Beobachtung:
und Umsetzung:
InformationsquelleAutor der Antwort Michal
In einem
UIView
Unterklasse Eigenschaft Beobachter können verwendet werden:Ohne Unterklassen Schlüssel-Wert-Beobachtung mit smart-key-Pfade tun:
InformationsquelleAutor der Antwort Rudolf Adamkovič
Erstellen Sie eine Unterklasse von UIView, und layoutSubviews überschreiben
InformationsquelleAutor der Antwort gwang
Können Sie erstellen eine Unterklasse von UIView und überschreiben Sie die
setFrame:(CGRect)frame
Methode. Dies ist die Methode, die aufgerufen wird, wenn der Rahmen (also der Größe) der Ansicht geändert. Etwas wie das hier tun:
InformationsquelleAutor der Antwort rekle
Ziemlich alt, aber immer noch eine gute Frage. In apples Beispielcode, und in einigen Ihrer privaten UIView-Unterklassen, überschreiben diese setBounds etwa wie:
Überschreiben
setFrame:
ist KEINE gute Idee.frame
ist abgeleitet voncenter
bounds
undtransform
also iOS nicht unbedingt nennensetFrame:
.InformationsquelleAutor der Antwort Adlai Holler
Swift 4 Schlüsselpfad KVO-Das ist, wie ich erkennen Anz. autom. und der Umstellung auf das iPad Seitenteil. Sollte funktionieren, funktionieren alle anzeigen. Hatte zu beobachten, die UIView - Schicht.
InformationsquelleAutor der Antwort Warren Stringer
Wenn Sie in einem UIViewController-Instanz überschreiben
viewDidLayoutSubviews
funktioniert der trick.InformationsquelleAutor der Antwort Dan Rosenstark