Frage

Ich arbeite an App. Die Orientierung der App ist Landschaft, aber nach der App -Schnittstellenorientierung von App ändert die Schnittstelle und dreht sich. Auftriebsbildschirm Display auf korrekte Weise (Landschaft). Ich benutze iOS7 Die App war Code für iOS5 Ich denke, es gibt ein veraltetes API -Problem, z.

enter image description here

War es hilfreich?

Lösung

Wenn Sie möchten, dass alle unsere Navigationscontroller den Top -Ansichts -Controller respektieren, können Sie eine Kategorie verwenden, damit Sie nicht eine Reihe von Klassennamen ändern müssen.

 @implementation UINavigationController (Rotation_IOS6)

-(BOOL)shouldAutorotate
{
   return [[self.viewControllers lastObject] shouldAutorotate];
 } 

-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [[self.viewControllers lastObject]     preferredInterfaceOrientationForPresentation];
}

@end

Wie einige der Kommentare hinweisen, ist dies eine schnelle Lösung für das Problem. Eine bessere Lösung ist die Unterklasse UinavigationController und setze diese Methoden dort ein. Eine Unterklasse hilft auch bei der Unterstützung von 6 und 7.

Andere Tipps

enter image description here

Sie müssen Orintatoin in Build Seeting siehe Bild festlegen.

Es wird Ihr Problem lösen.

Versuche dies:

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}

BEARBEITEN :

Siehe Anhang Verknüpfung, Könnte für Sie hilfreich sein.

Ich finde Lösung das Denken, das ich tue. Schritt Eins Überschreibung von meinem UinAvigationController, indem Sie eine Kategorie erstellen

Schritt zwei ersetzen [self.window addSubView: [NavigationController -Ansicht]]; //ALT

Mit [self.window setRootViewController: navigationController]; //NEU

Verwenden Sie dies in Ihrem AppDelegate.m

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    NSLog(@"Interface orientations");
    if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPad ){

        return UIInterfaceOrientationMaskLandScape;
    }
    else{
        return UIInterfaceOrientationMaskPortrait;
    }
}

Es hat mir geholfen..

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