2010-12-14 70 views
0

OK J'ai un problème intéressant sur une application iPad que je développe. Lorsque l'application est lancée en mode portrait, la mise en page fonctionne comme prévu. Je fais tourner l'iPad et la rotation fonctionne bien. Lorsque l'application se lance en mode paysage, des espaces blancs supplémentaires apparaissent et la mise en page ne fonctionne pas comme prévu. Mais quand je tourne l'application au portrait, il tourne très bien. Il se déroule également bien lorsque je le fais pivoter vers le paysage.Mise en page iPad différente uniquement au lancement

Qu'est-ce qui pourrait causer ce problème? Le contrôleur de vue en question est un contrôleur de vue qui contient un UINavigationController (que j'ai dû ajouter dans un en-tête). Je me demande si c'est quelque chose avec UINavigationController.

Répondre

0

Ok, donc ce qui était étrange dans mon application est que la mise en page deviendrait correcte lorsque le contrôleur onglet onglets rallumé à la vue qui était génial. J'ai donc ajouté un hack afin de basculer entre les onglets avant le makeKeyAndVisible de la fenêtre principale.

J'ai essayé votre suggestion WrightsCS. La vraie raison pour laquelle cela n'a pas fonctionné, c'est parce que je charge la vue de UINavigationController dans la sous-vue de la page, donc je n'ai pas vraiment le contrôle de la mise en page qui gâchait. La barre supérieure du contrôleur de navigation se chargeait un peu plus bas qu'elle aurait dû l'être.

0

Votre vue attend le mode Portrait lors du lancement. Dans votre vue Contrôleur, vous devez le faire savoir pour rechercher l'orientation et charger la vue correspondante.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    if(((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
     (interfaceOrientation == UIInterfaceOrientationLandscapeRight))){ 

     self.view = landscape; 

    }else if(((interfaceOrientation == UIInterfaceOrientationPortrait) || 
       (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))){ 

     self.view = portrait; 
    } 

    return YES; 
} 
+0

C'est seulement 1 ViewController et vue. Je ne charge pas une autre vue lorsque je passe du mode paysage au mode portrait. – Min

+0

Ensuite, vous devez vérifier l'orientation sur la charge et ajuster les cadres de l'objet en conséquence. Un moyen plus simple serait d'avoir 2 vues (configuration dans IB) sur votre 1 contrôleur. 1 vue appelée paysage et une appelée portrait, puis utilisez le code que j'ai ajouté à ma réponse. A travaillé comme un charme pour moi sur plusieurs projets. – WrightsCS

+0

Je vais essayer. – Min