Question

Je travaille sur l'application. L'orientation de l'application est le paysage mais après l'interface de l'application, l'orientation de l'interface de l'application modifie l'interface et tourne. Affichage de l'écran d'éclaboussure correctement (paysage). J'utilise iOS7 L'application était le code pour iOS5 Je pense qu'il y a un problème API obsolète, par exemple, le bot AutorotateToInterfaceOrientation appelé parce que ce n'est plus disponible dans les derniers iOS

enter image description here

Était-ce utile?

La solution

Si vous voulez que tous nos contrôleurs de navigation respectent le contrôleur de vue de la vue, vous pouvez utiliser une catégorie afin que vous n'ayez pas à passer par un tas de noms de classe.

 @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

Comme quelques-uns des commentaires indiquent, c'est une solution rapide au problème. Une meilleure solution est la sous-classe UinavigationController et y mettre ces méthodes. Une sous-classe aide également à soutenir 6 et 7.

Autres conseils

enter image description here

Vous devez définir OrintAtoin dans Build Seeting Voir l'image.

Cela résoudra votre problème.

Essaye ça:

- (BOOL)shouldAutorotate
{
    return YES;
}

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

ÉDITER :

Voir les attachés lien, pourrait être utile pour vous.

Je trouve une solution la pensée que je fais est. Étape One remplacer mon UinavigationController en créant une catégorie

Deux étapes remplacer [self.window addSubView: [NavigationController View]]; //AGÉ DE

Avec [self.window setRootViewController: NavigationController]; //NOUVEAU

Utilisez-le dans votre appdelegate.m

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

        return UIInterfaceOrientationMaskLandScape;
    }
    else{
        return UIInterfaceOrientationMaskPortrait;
    }
}

Ça m'a aidé..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top