willAnimateRotationToInterfaceOrientation nicht aufgerufen popViewControllerAnimated
In der MainViewController muss ich noch einstellen einige Bilder auf Orientierung ändern. Einfach nur den code hinzufügen, um die willAnimateRotationToInterfaceOrientation: Rückruf
- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration {
NSLog(@"orientation: %@", name(orientation));
..
Funktioniert wie erwartet. Während im hoch-schieb ich andere Orientierung bewusst UIViewController auf der UINavigationController. Ich drehen, um die Landschaft und alles ist gut.
Dann gehe ich zurück in die MainViewController durch den Aufruf
[self.navigationController popViewControllerAnimated:YES];
Während die Untersichten der MainViewController erhalten, angepasst an Landschaft nach der autoresize-Masken, willAnimateRotationToInterfaceOrientation: nicht genannt!
Hätte ich erwartet willAnimateRotationToInterfaceOrientation: werden auch genannt, wenn Sie nicht auf top-navigation controller-stack oder zumindest aufgerufen, bei der Rückkehr an die Spitze des stack.
Ich nehme an, ich könnte manuell aufrufen willAnimateRotationToInterfaceOrientation: vor dem pop, aber das fühlt sich falsch an.
Was bin ich?
InformationsquelleAutor tcurdt | 2010-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist das erwartete Verhalten, wie ich es sehe. Wenn die UIVC ist nicht auf die oben auf dem Stapel, dann willAnimateRotationToInterfaceOrientation sollte nicht aufgerufen werden, da keine Drehung animiert zu dieser Zeit. Die Art und Weise habe ich schon Umgang mit diesem in den app-ich arbeite jetzt ähnlich ist zu den oben genannten poster. Alle UIVC, unterstützt alle Orientierungen wird eine neue Methode
- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation;
Diese Methode wird aufgerufen, aus zwei Orten:
Die neue Methode ist einfach:
Darüber hinaus, wenn Sie waren besorgt über den code, der ausgeführt wird, wenn es nicht wirklich benötigt wird, können Sie verfolgen die Orientierung das Gerät wurde, wenn die neue UIVC geschoben wurde, auf dem stack über eine Instanz-variable gesetzt in viewDidDisappear und konsultieren Sie Sie, zu entscheiden, ob Sie "das Zeug"
Aber nach popViewControllerAnimated nicht, dass MainViewController ist an der Spitze ?
Super Antwort!!!!
InformationsquelleAutor Scott Roth
Ist das nicht das richtige Verhalten? Da die animation Rückruf sollte nur aufgerufen werden, bevor die animierte Ausrichtung ändern. Wenn Sie pop das oberste Stadtplan sehen Sie die pop-animation und dann die bereits gedreht Blick darunter. Es gibt keine rotation-animation und daher kein Rückruf. (Aber Sie sollten auf jeden Fall erhalten
willRotateToInterfaceOrientation:duration:
.)P. S. ich habe einen Beispiel Xcode-Projekt für interface-Orientierung Experimente auf GitHub, die Sie interessieren könnten.
InformationsquelleAutor zoul
da es keine rotation stattfindet, wenn Sie kommen zurück in die Hauptansicht der willAnimateRotationToInterfaceOrientation wird nicht aufgerufen. Allerdings, wenn Sie schauen, um etwas auf der Basis der geänderten Ausrichtung, fügen Sie den folgenden code in der Methode viewWillAppear der wichtigsten viewcontroller
InformationsquelleAutor Orca
Bin ich mit Scott auf diesen einen - ich denke, es ist das Verhalten, das zu erwarten ist.
Siehe auch die View Controller Programming Guide, wo es heißt, dass nur das vorderste controller haben werden die Methoden aufgerufen. (Suche nach 'vorderste' zu finden, die beiden relevanten stellen im Dokument.)
InformationsquelleAutor Erik Abele
Ich habe auch erlebt, dieses Verhalten, und ich denke, dass es aufgrund von Leistung und architektonischen Gründen; AFAIK diese Methode wird aufgerufen, in einer UIView animation Kontext (das können Sie ändern frames und-Zentren, und haben eine nette animation, während sich alles dreht) und wenn Ihr view-controller nicht sichtbar ist, entweder UIKit vermeidet, der diese Methode ausführt, oder einfach, es ist unmöglich, um es auszuführen, weil die Ansicht nicht sichtbar ist (und wahrscheinlich kann man nicht animieren, was Sie sehen können).
Nochmals, dies ist Reine Spekulation 🙂
InformationsquelleAutor Adrian Kosmaczewski