2017-02-01 3 views
0

Wie kann ich meine UIView (die keinen Zugriff auf den ViewController hat) eine Task nach eine Orientierungsänderung durchgeführt haben? Das heißt, es sollte keine Aufgabe stattfinden, bis die Animation vollständig abgeschlossen ist und der Rahmen sich aufgrund von Animation nicht mehr ändert.UIView Reagieren auf Orientierungsänderung nach Animation

Ich habe versucht, auf der UIView einen Beobachter Registrierung auf UIDeviceOrientationDidChangeNotifications zu reagieren, aber ein Breakpoint ich in dem Handler platziert haben wird vor die Animation selbst beginnt ausgelöst.

Antwort

1

Sie müssten den View-Controller einbeziehen. Nur der View-Controller kann einen Verweis auf den Übergangskoordinator erhalten, so dass er animate(alongsideTransition:completion:) aufrufen und etwas im Completion-Handler ausführen kann. Das ist der Moment, wenn die Animation beendet ist.

So könnte der Ansichtscontroller dann direkt mit der Ansicht sprechen, oder, wenn Sie möchten, dass die Ansicht völlig agnostisch ist, könnte der Ansichtscontroller eine benutzerdefinierte Benachrichtigung veröffentlichen, für die die Ansicht registriert wurde.

+0

Allerdings sollten Sie dies wahrscheinlich überdenken. Eine UIView ist Ansicht. Aller Wahrscheinlichkeit nach sollte der View-Controller, was auch immer Sie vorhaben, wahrscheinlich für das Ganze verantwortlich sein. Wenn Sie ein Layout erstellen, kann der View-Controller Dinge einrichten, bevor die Rotation beginnt, und die Änderung wird zusammen mit der Rotation animiert, was sehr cool ist. Wenn Sie einige Inhalte ändern, handelt es sich um einen Controller-Job und nicht um einen Job. – matt

+0

Hey Matt, danke für den Vorschlag. Ich vermutete, dass ein Verweis auf den View-Controller die einzige Lösung wäre. Im Grunde arbeite ich an einer Bibliothek für einen Videoplayer, so dass wir nicht unbedingt Zugriff auf den View-Controller auf Bibliotheksebene haben müssen, aber ich könnte eine öffentliche API einrichten, um einen Verweis auf den View-Controller zu übergeben. Was ich tun muss, ist, benutzerdefinierte Beschriftungen in der Ansicht basierend auf einer Orientierungsänderung neu auszurichten. – FateNuller

Verwandte Themen