Unterstützung der Universal App mit Hochformat auf dem iPhone und Querformat + Hochformat auf dem iPad

Ich brauche meine App, um sowohl mit dem iPad als auch mit dem iPhone kompatibel zu sein. Es hat einen tabbarController als rootViewController.

uf dem iPad muss es sowohl im Quer- als auch im Hochformat verfügbar sein. Auf dem iPhone muss der rootView jedoch Portrait sein, und auf dem tabbarController werden einige viewsController angezeigt, die sowohl im Quer- als auch im Hochformat verfügbar sein müssen (z. B. ein viewController zum Abspielen von Videos von Youtube). Daher sperre ich die Drehung des tabbarControllers wie folgt (In der UITabbarController-Unterklasse).

# pragma mark - UIRotation Methods

- (BOOL)shouldAutorotate{
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
}

- (NSUInteger)supportedInterfaceOrientations{
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskPortrait;
}

Was ich vorhabe, ist, dass durch Sperren der Drehung des rootviewControllers (tabbarController) alle VCs im tabbarController (nur auf dem iPhone) gesperrt werden und Ansichten, die oben auf dem tabbarController angezeigt werden, sich je nach Geräteausrichtung drehen können .

DAS PROBLE

Alles funktioniert wie erwartet, bis die App im iPhone in der Landschaft gestartet wird. Wenn die App im Querformat gestartet wird, wird standardmäßig Querformat verwendet, und die App wird im Querformat gestartet, das nicht vorgesehen ist. Es sollte im Hochformatmodus selbst gestartet werden, selbst wenn die Geräteorientierung Querformat 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 diese Methode verwendet, um den Start der App im Hochformat in der Anwendung zu erzwingen: didFinishLaunchingWithOptions:

#pragma mark - Rotation Lock (iPhone)

- (void)configurePortraitOnlyIfDeviceIsiPhone{
    if ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone))
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
}

Das Problem bleibt weiterhin bestehen. Ich habe alle Ausrichtungsoptionen auf der info.plist für den SupportedInterfaceOrientaions-Schlüssel sowohl für das iPad als auch für das iPhone zugelassen, da die App für das iPhone im Querformat sein muss, selbst wenn nur für einige viewController. Das Problem kann behoben werden, wenn ich den Start der App im Hochformat erzwingen kann, auch wenn das Gerät im Querformat ausgerichtet ist. Bitte korrigieren Sie mich, wenn ich in der Logik falsch liege. Wenn nicht, wird jede Hilfe zum Starten der App im Hochformat geschätzt.

Ich habe bereits @ durchgemacdiese Frage hier undHie, konnte es aber noch nicht zum Laufen bringen.

Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage