2009-10-24 4 views
2

J'ai besoin de tourner dans l'image plusieurs fois dans 90 degrés J'utilise le code suivant,Comment effectuer une rotation incrémentielle d'un UIImageView?

CGAffineTransform transform = CGAffineTransformMakeRotation(PI/2); 
shape.transform = transform; 

forme ici être mon UIImageView. Le problème est que chaque fois que je clique sur le bouton de rotation, il le fait pivoter de sa position d'origine, ce qui n'est pas ce que je veux. Je voudrais le faire pivoter de la nouvelle position.

Je suis nouveau à la programmation iphone, excuses si je manque sur quelque chose de très basique et merci d'avance pour votre aide.

Kedar

Répondre

7

Si vous essayez d'animer cette rotation, vous pouvez lire my answer-this question, où quelqu'un tente d'animer une rotation supplémentaire d'une vue. Il s'avère que l'animation incrémentale d'une transformation à l'aide de CABasicAnimations est un peu plus compliquée que ce à quoi vous vous attendez. Vous devez d'abord lire la transformation actuelle de la couche de votre UIView à partir de sa couche presentationLayer, puis l'insérer dans votre animation sous la forme fromValue.

Cependant, dans votre cas, il semble que vous utilisiez un bloc d'animation UIView pour animer la propriété transform de votre vue. Le code tel que vous l'avez écrit ne ferait que régler la transformation de votre vue à la même rotation de 90 degrés, il ne ferait pas pivoter la vue par incréments de 90 degrés de manière incrémentielle. Pour faire une rotation supplémentaire, je crois que vous auriez besoin de quelque chose comme ce qui suit:

CGAffineTransform transform = CGAffineTransformRotate(shape.transform, M_PI/2.0f); 
shape.transform = transform; 

qui saisira la transformation actuelle de la vue, faites-le pivoter de 90 degrés, puis appliquer la résultante transform à la vue. Encore une fois, cela peut rencontrer les mêmes problèmes qu'avec CABasicAnimations, auquel cas vous devriez consulter la réponse ci-dessus.

+0

Merci brad. votre extrait de code a bien fonctionné. Tu es l'homme! –

+0

Content de vous aider. Si cela a effectivement résolu votre problème, vous pouvez vérifier la marque "acceptée" à gauche de la réponse. –

Questions connexes