2010-10-08 4 views
3

J'essaie de créer une application iPad mais je rencontre un comportement douteux du simulateur (Ne peut pas être testé sur un appareil pour l'instant ..).La rotation d'un UIView à travers la propriété "transform" se gâte lorsque l'orientation change

Le problème survient lorsque n'importe quel UIView pivote à travers sa propriété de transformation, puis permet à la vue qui le contient d'être manipulée en changeant l'orientation de l'iPad. Cela peut être simplifiée en créant un nouveau projet iPad basé Voir et insérer le code suivant au contrôleur de vue:

- (IBAction) rotate:(UIView*)sender { 
if (CGAffineTransformIsIdentity(sender.transform)) { 
    sender.transform = CGAffineTransformMakeRotation(M_PI/4); 
} else { 
    sender.transform = CGAffineTransformIdentity; 
} 
} 

Ensuite, l'ajout d'un seul bouton à la vue et de lier son action avec la méthode ci-dessus.

Comme vous le voyez, la méthode devrait faire tourner le bouton quand on clique dessus, et ensuite on ne tourne pas quand on clique à nouveau - et c'est exactement ce que l'on fait. Cependant, lorsque vous faites pivoter le bouton et que vous changez d'orientation (dans le menu Matériel), il commence à agir de manière vraiment étrange - en changeant sa forme ou en disparaissant complètement.

À noter que si je crée une transformation traduction, cela ne se produit pas.

Ma question est:

1. Depuis que je n'ai pas un iPad au moment (travail sur cela), quelqu'un peut me dire si cela se produit sur l'appareil aussi bien? 2. Est-ce que je fais quelque chose de mal ici? Peut-être que ce n'est pas la façon de faire pivoter l'UIView? Si oui, qu'est-ce que c'est?

Mise à jour: De la documentation, il semble que Si [la transformation] propriété est pas l'identité de transformation, la valeur de la propriété frame est définie et doit donc être ignorée. Donc le problème est probablement le fait que j'utilise le autoresizeMask tout en changeant la propriété transformer. Alors, comment cela peut-il ou devrait-il être fait?

Merci, Aviad.

Répondre

0

Je pense que si je me souviens bien, j'ai rencontré ce même problème il y a quelque temps et cela a été causé par des ancres dans Interface Builder. Aller dans l'inspecteur de taille et éteindre les broches qui épinglent la vue sur les bords dans le panneau d'autorisation, je pense que cela devrait le faire.

J'espère que je me souviens de cela correctement.

Questions connexes