2009-06-01 8 views
0

Lorsque vous modifiez le point central d'une vue pivotée de 10 degrés, les coordonnées spécifiées pour le point central ne correspondent pas au système de coordonnées de l'aperçu. Par exemple, si vous voulez aller directement vers le haut par y-50, et sans mouvement horizontal (c'est-à-dire x = theRotatedView.center.x), le décalage dans la direction y sera pivoté. La vue ira vers le haut et juste, et pas seulement vers le haut.Comment puis-je déplacer une vue pivotée par rapport au système de coordonnées de sa vue d'ensemble?

La rotation est effectuée sur la vue et non sur la couche.

Je pourrais l'envelopper dans un aperçu qui fait le mouvement, tandis que la sous-vue fait la rotation. Ensuite, je n'ai eu aucun problème avec la conversion. Mais peut-être existe-t-il une solution simple. Je veux juste déplacer le centre d'une vue pivotée comme si la vue n'était pas pivotée, c'est-à-dire quand je souhaitais que y soit décrémenté de 10, faites-le sans vous soucier des coordonnées pivotées. Existe-t-il des méthodes ou des fonctions pour la conversion entre les systèmes de coordonnées, de sorte que je puisse simplement spécifier les coordonnées du point central dans les coordonnées de présentation et il sera juste de les appliquer à la propriété du centre de la vue pivotée?

Répondre

0

Vous pouvez multiplier vos coordonnées par une matrice de transformation. Cela place vos coordonnées dans "l'espace de coordonnées" de votre vue parente. Vous pouvez également utiliser la matrice inverse de la vue parent pour prendre les coordonnées qui se trouvent dans la vue parente et les renvoyer dans "l'espace du monde".

http://en.wikipedia.org/wiki/Rotation_matrix

Lire plus bas la page des exemples pseudo-code.

1

Regardez les méthodes CGAffineTransform, telles que CGAffineTransformMake, pour générer plus facilement les transformations dont vous avez besoin. Vous pouvez combiner rotation et translation dans une matrice.

Questions connexes