2010-04-29 6 views

Répondre

1

Le contrôleur que vous présentez à l'aide presentModalViewController: animation: devrait soutenir toute orientation, typiquement en utilisant cette méthode:

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

Avec cette méthode, lorsque vous présentez votre contrôleur en orientation paysage, il apparaît correctement dans le paysage orientation, aussi.

0

J'ai eu le même problème. J'ai mis TRUE AutorotateInterfaceOrientation mais au début mon modalview était toujours présenté Portrait même si c'était Landscape. Seulement si j'ai changé l'orientation de l'appareil (dans l'émulateur), son comportement est devenu correct. Mais au début, non! Je ne sais pas pourquoi, mais tout dépend de l'endroit où vous présentez la vue. Si vous présentez, par exemple, la méthode viewDidLoad, un problème survient. Pour résoudre le problème, j'appelle presentModalView à partir d'une méthode appelée viewDidLoad (apparemment, cela semble la même chose). Alors, je l'ai fait quelque chose comme:

- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 
    // add this line 
    [self performSelector:@selector(presentModal) withObject:nil afterDelay:0]; 
} 

-(void) presentModal{ 
    // here present your view 
} 

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

Cela fonctionne pour moi

0

Je viens de résoudre ce problème pour moi-même en ajoutant du code dans viewDidAppear. Je pense que la raison pour laquelle il ne s'est pas montré dans l'orientation correcte pour moi est parce que j'avais le code modal show dans viewDidLoad et à ce moment là, je pense que la vue venait de charger mais l'orientation n'était pas encore définie. Donc, l'ajouter dans viewDidAppear a fonctionné pour moi. Vous aurez probablement aussi de la chance dans viewWillAppear (car à ce moment-là, il doit savoir quelle est l'orientation, les limites, les tailles, etc.).

Questions connexes