Für meine App rootViewController
ist navgationController
.
Ich habe das gefunden Controller gedrückt
-(BOOL)shouldAutorotate
wird nicht aufgerufen.
und
-(NSUInteger)supportedInterfaceOrientations
wird nur einmal aufgerufen.
Ich habe korrekt in xcode's
Projekt Zusammenfassung (oder plist
) für Windows alle Orientierungsunterstützung überprüft.
Ich möchte, dass diese Methode aufgerufen wird, da es einen uicontrol-Positionierungscode gibt, den ich programmatisch für eine Orientierungsänderung ausführen möchte.
Ich habe dieses Problem gelöst, indem ich die folgenden Methoden des Navigationssteuergeräts (Kategorie) überschrieben habe:
%Vor%Ich habe überprüft, welcher Controller gedrückt wird, und dementsprechend den entsprechenden uicontrol-Positionierungscode des verschobenen Controllers in der folgenden Methode des Navigations-Controllers aufgerufen.
%Vor%Das funktioniert gut, aber ich denke nicht, dass dies der richtige Weg ist. Bitte helfen Sie mir für eine bessere Lösung.
Sie können den folgenden Link überprüfen, Sie müssen benutzerdefinierte Navigation zur Unterstützung erstellen, sollte automatisch
drehenDie andere Möglichkeit besteht darin, die Kategorie von UINaviagationController
zu erstellenCode für .h-Datei ist
%Vor%und Code für .m-Datei ist
%Vor%Ich hatte auch das gleiche Problem mit dem Navigationscontroller. Es funktioniert gut bei allen Pushed View Controllern, aber mein Szenario war ziemlich anders. Ich hatte einen Viewcontroller, der als root in den Navigationscontroller (ViewControllerParent) geschoben wurde,
%Vor%Aufgrund einiger Projektanforderungen habe ich ViewControllerParent als Basis beibehalten, und dann habe ich die Ansicht von Child ViewController basierend auf Benutzeraktionen als Unteransichten zum übergeordneten Element hinzugefügt. Jetzt hatte ich ein Szenario, in dem ich wollte, dass Child1 nicht rotiert und Child2 Rotation hat.
Das Problem, dem ich gegenüberstand, war, dass mein [self.topViewController] in der Navigations-Controller-Klasse immer das Eltern-Objekt zurückgibt, da ich die Childs nicht in den Nav-Stapel schiebe. Also werden meine shouldAutorotate-Methoden in meinem Childs nie aufgerufen werden. Also musste ich die Methode shouldAutorotate meiner Elternklasse einchecken und dann den Rotationswert zurückgeben. Ich habe so etwas in der Elternklasse (ViewControllerParent) gemacht, es ist eine Art Workaround, aber es behebt das Problem
%Vor%-anoop
Sie können die Schnittstellenausrichtung über
prüfen %Vor% wenn der View Controller geladen ist, zB in viewWillAppear
. Dort können Sie Ihr Layout von Unteransichten erstellen. Sobald die Ansicht geöffnet ist, wird shouldAutorotate
aufgerufen, sobald das Gerät gedreht wird.
Ich hatte das gleiche Problem. Überprüfen Sie diese Antwort Es ist ein großer Approach, anstatt ShouldAutoRotate
anzuwendenTags und Links objective-c iphone ios xcode ios6