Frage

Meine Anwendung ist recht einfach, aber ich habe einige Probleme, wenn sie beginnt. Ich habe mich in der Info eingesetzt. Platte, um landschaftlich gestaltet zu werden, aber es scheint die Reihenfolge zu ignorieren. Wenn die App geladen wird, wird der Simulator angelegt, aber dann kehrt sie im Porträtmodus zurück.

Dies ist die Hierarchie der Ansichten und Controller:

  • MainViewController (erweitert uitabbarController, um das sattungsversorgungsversorgte und stellte die INTERFACEORIENTIONIERUNG zu überschreiben :)
    • Drei erweiterte UitableViewController als Registerkarten (auch diese haben die seriutorotatetointerfaceorientierung korrekt eingerichtet).

Wenn ich die Orientierung des Geräts irgendwie in die Landschaft erzwinge, mit:

[Uidevice currentDevice] Setorientierung: UiInterfaceorientationlandScaperight];

Für einen Augenblick blinkt der Simulator im Porträtmodus und wird dann angelegt. Das Problem ist, dass auf diese Weise die Auto-Rotation-Animationen gestartet werden, was ich nicht tollen kann. Ich möchte nur eine feste, angelegte Anwendung.

Irgendwelche Hinweise? Vermisse ich etwas?

War es hilfreich?

Lösung

Versuche Folgendes. Ich bin mir nicht sicher, warum es für Sie nicht funktioniert

1) Setzen Sie die wichtige UiInterfaceorientierung
zu UiInterfaceorientationlandScaperight in Ihrer .plist -Datei

2) Überschreiben Sie Ihre uitabbarController -Methode vonAutorotatetoInterfaceorientation (); Im folgenden Code befindet sich nur mit Tab Null und einem und nur mit einem Controller: Wenn Sie einen Navigationscontroller haben und verschiedene Controller steuern möchten, die sich möglicherweise auf dem Stapel befinden, müssen Sie den Code entsprechend ändern

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    BOOL tabZeroController = [[[self.viewControllers objectAtIndex:0] visibleViewController] isKindOfClass:[YourTabZeroTableViewController class]];

    BOOL tabOneController = [[[self.viewControllers objectAtIndex:1] visibleViewController] isKindOfClass:[YourTabOneTableViewController class]];


    if(self.selectedIndex == 0 && tabZeroController)
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

    if(self.selectedIndex == 1 && tabOneController)
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

    return NO;

}

2) Einstellung

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

In der Anwendung Ihres Delegiertens ist die Methode für den Simulator nur auf einem Gerät erforderlich

3) Fügen Sie in Ihren Controllern die folgenden SURTOUTOTOROTATETOIntoIntoRaTorientation (Methode) hinzu

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
   return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

4) Führen Sie die App auf Ihrem Gerät aus und überprüfen Sie, ob sie ordnungsgemäß funktioniert, indem Sie das Hardware -Menüelement verwenden und nach rechts drehen. Sie sollten das Display im Landschaftsmodus sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top