2010-12-14 66 views
2

J'ai implémenté shouldAutorotateToInterfaceOrientation et tout fonctionne correctement dans les termes ou les changements d'orientation dans mon application une fois qu'elle est en cours d'exécution. Cependant, je n'aime pas le comportement de mon application quand il est lancé. Lorsque je lance mon application en orientation portrait, elle s'ouvre comme prévu, mais lorsque je lance mon application en orientation paysage, tout est chargé en mode portrait (y compris la barre d'état), puis une animation de mon écran s'affiche tournant au paysage. Cette animation va bien, mais je ne veux pas qu'elle soit affichée au lancement. Lorsque je regarde la plupart des autres applications, elles semblent détecter l'orientation au démarrage et ne montrent pas l'animation de rotation au lancement (uniquement si l'appareil est pivoté après le lancement).Lancer une application en orientation paysage provoque une rotation au lancement

Comment puis-je m'assurer que mon application se charge dans la bonne orientation afin que l'utilisateur ne voit pas l'animation de rotation au lancement. Je préférerais que l'utilisateur ne voit l'animation de rotation que s'il tourne l'appareil après le lancement.

Répondre

5

Bon je pense que je l'ai compris. Pour tous ceux qui ont créé une application à partir d'un tempalte iPhone et l'ont ensuite modifié pour iPad, vous devez ajouter une ligne dans votre fichier -info.plist qui indique "Orientations d'interface supportées" et entrer toutes les orientations supportées comme ci-dessous. Ensuite, il semble fonctionner comme prévu.

<key>UISupportedInterfaceOrientations</key> 
<array> 
    <string>UIInterfaceOrientationPortrait</string> 
    <string>UIInterfaceOrientationPortraitUpsideDown</string> 
    <string>UIInterfaceOrientationLandscapeLeft</string> 
    <string>UIInterfaceOrientationLandscapeRight</string> 
</array> 
+0

Excellent.Ce corrigé un problème que j'avais.Mon application ne supporte que le paysage, mais lancerait à l'envers si l'appareil n'a pas été dans l'orientation du paramètre UIInterfaceOrientation.Il tournerait assez rapidement, mais était ennuyeux. (A également dû fournir une image de lancement appropriée afin qu'il ne démarre pas en portrait à certains moments.) Merci! (Pour d'autres, cela est documenté ici http : //j.mp/fY56ml) – lilbyrdie

+0

Heureux que je pourrais aider! N'hésitez pas à voter pour ma réponse ou quelque chose afin que je puisse obtenir des points pour répondre à ma propre question! :) – Jackson

+1

Merci Jackson ,, quelle magie .. le –

0

je l'ai fait quelque chose comme ça dans mes applications:

if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationLandscapeRight){ 
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]; 
}else if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationLandscapeLeft){ 
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft]; 
} 

simplement: Détecte Orientation au début et puis définissez la StatusBarOrientation à cette valeur. Si vous le faites avant de charger votre vue (ou du moins, si possible plus tôt dans la structure de votre application), la barre d'état doit apparaître du début sur le côté droit (il n'y a donc pas de rotation nécessaire). Si vous voulez soutenir aussi orientation portrait, il suffit d'ajouter 2 autres forks pour eux ...

+0

Je viens d'essayer cela, mais j'ai ajouté deux ifs pour d'autre UIInterfaceOrientationPortrait et UIInterfaceOrientationPortraitUpsideDown et il ne change rien. Mon application se lance toujours, puis la barre d'état change, puis l'écran pivote dans la bonne direction. :( Je l'ai ajouté à didFinishLaunchingWithOptions dans mon délégué de l'application.Est-ce que je devrais l'ajouter? – Jackson