2010-09-07 12 views
0

Je travaille sur une application de création de diagrammes qui affiche les boîtes sous-vues dans une vue plus grande. L'utilisateur peut déplacer les boîtes autour. Je persiste les positions de ces boîtes en utilisant les données de base dans une base de données sqlite en maintenant la hauteur, la largeur, x et y (du coin supérieur gauche). Lorsque j'ouvre un diagramme, je lis ces valeurs dans la base de données et je les utilise pour définir le cadre de la sous-vue dans la vue principale.L'affichage de UIViews au mauvais endroit en mode paysage

En mode portrait, cela fonctionne très bien et les boîtes sont repositionnées aux bons endroits sur l'écran. Cependant, quand je tourne dans le paysage, ou commence l'application dans le paysage et ouvre le diagramme, les positions des boîtes sont fausses.

J'ai parcouru le code et je peux voir que les valeurs correctes reviennent du stockage persistant et sont utilisées pour définir correctement la trame. Cependant, une fois que l'UIView de la sous-vue est à l'écran, il est positionné à un emplacement différent (clairement visible et confirmé en vérifiant les valeurs dans le cadre de la vue). Maintenant, la chose étrange est qu'au lieu d'être un décalage de pixels fixe, la coordonnée x est toujours 8,5% plus grande que la valeur utilisée pour créer la trame, et la valeur y est toujours 9,1% plus petite.

Est-ce que quelqu'un a des explications sur les raisons pour lesquelles cela pourrait être et comment je pourrais résoudre le problème?

S'il fournit des indices, la vue principale se trouve dans un UIScrollView.

Répondre

0

D'accord, j'ai trouvé la réponse. J'avais besoin de mettre Autoresize Subviews à false sur l'UIScrollView. Après avoir fait cela (en décochant la case appropriée dans IB) tout semble fonctionner correctement.