2010-09-15 21 views
4

Si une vue est ajoutée à la fenêtre, l'orientation est définie comme portrait même si l'appareil est en mode paysage. Si la vue est ajoutée dans le délégué de l'application, application: didFinishLaunchingWithOptions: méthode, puis il fonctionne correctement. Mais si la vue est ajoutée plus tard, ce n'est pas le cas. Par exemple, j'ai une routine pour changer de vue. La forme la plus simple est:Lors de la modification des sous-vues UIWindow, l'orientation n'est pas définie

- (void)switchToNewViewController:(UIViewController *)newViewController { 
if ([[window subviews]count]!=0) { 
    [[[window subviews]objectAtIndex:0] removeFromSuperview]; 
} 
[window addSubview:newViewController.view]; 
} 

Si cela est appelé depuis didFinishLaunching, l'orientation est correcte. Si ce n'est pas le cas, l'orientation est portrait.

simple est à l'intérieur didFinishLaunching j'ai les deux lignes suivantes

// The following line works 
[self switchToNewViewController:fullScreenViewController]; 

// The following line which delays the method call until later results 
// in incorrect orientation 
[self performSelector:@selector(switchToNewViewController:) withObject:fullScreenViewController afterDelay:0.1]; 

Y at-il un moyen de faire le point de vue ont la bonne orientation?

+0

avez-vous réussi à résoudre ce problème? – pt2ph8

Répondre

1

Assurez-vous que votre shouldAutorotateToInterfaceOrientation dans les contrôleurs de vue a la logique droite

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    return YES; //this supports all orientations 
} 

Si vous liez des choses dans InterfaceBuilder également vous assurer à la fois la vue et le viewcontroller sont configurés pour l'orientation initiale que vous le souhaitez. (Il y a une petite flèche dans le coin supérieur droit pour faire pivoter les vues et afficher les contrôleurs)

Si vous avez encore des problèmes, utilisez-vous un UINavigationController ou similaire? UINavigationController doit être sous-classé et shouldAutorotateToInterfaceOrientation implémenté si vous voulez supporter autre chose que portait.

+0

C'était en partie le problème. Si je me souviens, le soutien du développeur Apple est venu avec deux problèmes. Il est important que toutes les vues permutées prennent en charge la même orientation et qu'un seul contrôleur contrôle l'écran à la fois. Il y avait aussi des problèmes connus avec iOS3.2 qui ont été corrigés dans les versions ultérieures. – David