Ich brauche meine App sowohl auf dem iPad als auch auf dem iPhone kompatibel. Es hat einen TabbarController als rootViewController.Unterstützung der Universal-App mit Portrait-Ausrichtung auf iPhone und Querformat + Portrait auf dem iPad
In iPad muss ich es sowohl auf Landscape und Portrait verfügbar sein. In iPhone obwohl ich die rootView, um selbst Portrait zu sein, und ich habe einige ViewsControllers, die auf dem TabbarController präsentiert werden, die sowohl im Querformat und Hochformat verfügbar sein müssen (z. B. ein ViewController zum Abspielen von Videos von Youtube). Also sperre ich die Drehung des TabbarControllers wie folgt (in der UITabbarController Subclass).
# pragma mark - UIRotation Methods
- (BOOL)shouldAutorotate{
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
}
- (NSUInteger)supportedInterfaceOrientations{
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskPortrait;
}
Was ich beabsichtige zu tun ist, dass durch die Drehung des RootViewController (TabBarController) blockiert, ich bin Verriegelung der alle VCs in der TabBarController (nur auf dem iPhone) und Ansichten, die auf der Oberseite des TabBarController präsentiert werden können Drehen Sie sich entsprechend der Ausrichtung des Geräts.
DAS PROBLEM
Alles funktioniert wie erwartet, bis die App in der Landschaft in dem iPhone gestartet wird. Wenn sie im Querformat-Modus gestartet wird, wird die App standardmäßig im Querformat angezeigt und die App wird im Querformatmodus gestartet, was nicht beabsichtigt ist. Es sollte im Portrait-Modus selbst starten, auch wenn die Geräteausrichtung Landscape ist. Da ich die automatische Rotation für das iPhone deaktiviere, befindet sich die App weiterhin im Querformat, was zu einem Fehler führt. Ich habe versucht, diese Methode, um die App zu zwingen, im Portrait zu starten in der Anwendung: didFinishLaunchingWithOptions:
#pragma mark - Rotation Lock (iPhone)
- (void)configurePortraitOnlyIfDeviceIsiPhone{
if ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone))
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
}
das Problem weiterhin besteht. Ich habe alle Orientierungsoptionen auf der info.plist für SupportedInterfaceOrientaions Taste sowohl für iPad und iPhone erlaubt, da ich die App in der Landschaft für das iPhone sein muss, auch wenn nur für ein paar ViewControllers. Das Problem kann behoben werden, wenn ich die App dazu zwingen kann, im Hochformat zu starten, auch wenn die Geräteausrichtung Landscape lautet. Bitte korrigieren Sie mich, wenn Sie in der Logik falsch liegen, wenn nicht, wird jede Hilfe hilfreich sein, die App im Hochformat starten zu lassen.
Ich habe bereits this question here und here durchlaufen, aber konnte es noch nicht funktionieren.
Vielen Dank
Gutes Verständnis, ich werde dies implementieren. Danke, ich habe diese Art von Lösung gesucht, die wir in AppDelegate implementieren können, und müssen nicht in alle View-Controller schreiben. –