6
votes

L'application iPhone est en mode paysage, mais la vue est toujours portrait

Qu'est-ce qui se passe vraiment derrière la scène lorsque vous définissez l'orientation du téléphone en mode paysage? Lorsque j'ai suivi les limites de l'écran principal et que les limites de la sous-Sous-site, la largeur et la hauteur sont toujours 320x480, plutôt que 480x320.

aucune idée pourquoi?


0 commentaires

6 Réponses :


1
votes

Vérifiez-vous la propriété des limites ou la propriété de cadre? Certains contrôles, en particulier les uiviews qui remplissent l'écran, semblent maintenir le même cadre dans n'importe quelle orientation; Je pense que AppKit définit leur propriété de transformation pour faire pivoter leur contenu.

Vous constaterez probablement que la propriété des limites a la valeur que vous attendez la plupart du temps, mais que la propriété image ne le fait pas.


1 commentaires

J'ai vérifié les deux limites et le cadre, ils viennent tous les deux reflétant les informations de mode portrait (c'est-à-dire 320x480)



0
votes

Oui, le cadre et les limites restent les mêmes, vous devriez vérifier la propriété InterfaceCacacer ViewController et traiter la largeur et la hauteur en conséquence, si votre présentation dépend spécifiquement de ces.


0 commentaires

0
votes

J'ai le même problème avec une application iPad pour le moment.

i "résolu" il en interrogeant les vues interfaceCacorientation uideviceOrientationportrait ou uideviceorientationportraitutupedown puis je définirai manuellement le cadre de mon Sous-couche dans la vue (qui est un cagradientlayer ).


0 commentaires

1
votes

C'est un gros sujet, mais j'ajouterai ce qui correspond à 0,02; Les commentaires sont contraints aux changements entre portrait et paysage; C'est-à-dire, pas de choses comme à l'envers, face à face, face cachée et inconnue.

  1. Si une vue n'échappe pas aux modifications d'orientation, le cadre et les limites resteront les mêmes quelle que soit l'orientation.

  2. Si une vue est enregistrée pour écouter les modifications d'orientation, les Les limites peuvent changer; I.E., dans le cadre de l'écran entier de paysage est <320,480> tandis que les limites sont <480,320>. Cela suppose:

    a. Vous utilisez soit l'utilisation d'un rappel de DoTutoroTereTointerFaceOrientation avec des valeurs de retour oui appropriées, ou

    b. S'inscrire explicitement avec le centre de notification pour écouter UideviceSorientationDidChangenotification.

  3. Approche 2a ne tiendra true que pour les vues appartenant au contrôleur de la vue Root de la fenêtre de l'application; C'est-à-dire que le contrôleur d'affichage dont la vue a été ajoutée en premier. L'approche 2B peut être utilisée conjointement avec des transformations affines et des modifications des limites manuelles pour obtenir une disposition d'orientation appropriée pour les vues non régies par l'autorotation.


0 commentaires

1
votes

J'ai trouvé que si vous n'utilisez pas d'uoinavigationController, vous pouvez obtenir des problèmes avec votre vue ne pas être donné les limites de la vue et de la trame correctes.

J'avais directement une vue sur l'UIWindow et j'ai eu exactement ce problème. Mais quand j'ai pris sa sandwiching un uinavigationContrôleur entre UiWindow et mon uIViews, le problème est parti.

espoir que cela aide


0 commentaires

0
votes

a trouvé le problème - la raison pour laquelle les limites sont toujours identiques après une rotation, car la seule chose touchée après une rotation est la propriété de transformation de la vue.

Une trace rapide de la transformation de la vue me donne ceci: xxx


0 commentaires