Probleme mit Schnittstellen Orientierung und UITabBarController
-
26-09-2019 - |
Frage
Schnell Problem:
Ich habe ein UITabBarController mit 2 Navigation-Controller [lässt sie rufen Links und Rechts Controller]
Auf dem Standard ausgewählten Linke-Controller kann ich einen neuen View-Controller drücken, das erkennt Schnittstelle Orientierung.
Auf der rechten Regler kann ich die gleiche View Controller schieben, aber es wird nicht Schnittstelle Orientierung, oder für diese Angelegenheit erkennen kann, wird nicht einmal die shouldAutoRotateInterface Methode bei allen T gehen in ___ T
Haaalp !!
Wenn es von Relevanz ist, die Ansicht Contoller, dass ich verwende die hidesBottomBarWhenPushed Eigenschaft drücken.
Lösung
hat Ihr UITabBarController die automatische Drehung implementieren? jedes Kind, das Viewcontroller autorotate umsetzen will, muss seine Eltern implementieren autorotate haben.
Andere Tipps
Wahrscheinlich ist dies Ihr Problem:
Tab Bar-Controller unterstützt ein Porträt Orientierung standardmäßig und nicht Drehen, um eine Querformat , wenn nicht alle der Stammansicht Controller unterstützen solche Orientierung . Wenn eine Vorrichtung Orientierung Änderung auftritt, die Registerleiste Controller Abfragen seiner Reihe von View-Controller. Wenn einer von ihnen nicht unterstützt die Ausrichtung, die Registerleiste Controller nicht sein ändern Orientierung.
Die Lösung ist die folgende Methode auf jedem View-Controller zu überschreiben, um Ihre Ansicht führende:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return YES;
}
Zum Beispiel, anstatt den Standard UITabBarController
in IB verwenden, ersetzen Sie es mit Ihrer eigenen Unterklasse enthält nur die oben beschriebene Methode.
Ich bin ein bisschen spät, um die Partei zu diesem Thema, aber ich lief in ein Problem mit Autorotation beim Start für eine Tab-Leiste app, die ich immer im Portrait laufen wollte.
Die plist App verfügt über die notwendigen Einstellungen sowohl für Start in und erlaubt nur Portrait-Modus, und alle meine Ansicht-Controller nur Portrait-Modus ermöglichen. Doch wenn ich die App hält mein iPhone in der Landschaft begann, der App im Porträt begonnen, aber dann auf Landschaft gedreht!
Anstatt Unterklasse UITabBarController
, habe ich einfach overrode UITabBarController
der shouldAutorotateToInterfaceOrientation:
Methode eine Kategorie Klasse UITabBarController
verwenden. Ich enthalten diesen Code in meinem AppDelegate:
@implementation UITabBarController(UITabBarControllerCategory)
-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
Arbeiten schön, und ist sehr leicht.