2010-08-16 6 views
0

Me encore. J'ai une question simple. J'ai un UIImageView comme celui montré ci-dessous. alt text http://img683.imageshack.us/img683/1999/volumen.pngPosition sur UIImageView

Cette UIimageView est censée être le bouton pour contrôler le volume de mon projet iphone. Ma question est, comment savoir les positions de barre sur le UIImageView quand il est tourné? Car le volume doit être de 0.5 lorsque la petite barre du cercle est verticale.

J'ai obtenu un morceau de code qui est (dans la méthode touchMoved):

float dx = locationT.x - imgVVolume.center.x; 
float dy = locationT.y - imgVVolume.center.y; 


CGFloat angleDif = 0.0f; 

movedRotationAngle = atan2(dy,dx); 

if (beganRotationAngle == 0.0) { 
    beganRotationAngle = movedRotationAngle; 
    initialTransform = imgVVolume.transform; 
} 
else { 
    angleDif = beganRotationAngle - movedRotationAngle; 
    CGAffineTransform newTrans = CGAffineTransformRotate(initialTransform, -angleDif); 
    imgVVolume.transform = newTrans; 
} 

Aide s'il vous plaît.

+0

quoi de mal? quelle est la question? –

+0

La question est de savoir comment connaître la position de l'imageview afin d'ajuster le volume – awlcs

+0

wouldnt que ce soit l'angleDif que vous recherchez? Peut-être vous devez les ajouter tous ensemble :) – willcodejavaforfood

Répondre

1

Cela dépend du mécanisme d'entrée que vous voulez utiliser pour contrôler la rotation.

Si le bouton doit pivoter d'un seul doigt, vous pouvez créer un UIPanGestureRecognizer et l'attacher au bouton UIImageView. La méthode translationInView: renvoie un CGPoint qui correspond à la quantité de mouvement X et Y à partir du point de contact. Vous pouvez nourrir cela dans une formule comme celle que vous publiez pour obtenir un angle de rotation. Vous devez garder une trace du delta à partir de la dernière position et vérifier également les limites d'arrêt (comme 0..360) pour éviter une rotation excessive. OTOH, si vous voulez utiliser la rotation à deux doigts, vous devez utiliser un UIRotationGestureRecognizer et rechercher la valeur rotation. Juste nourrir dans un CGAffineTransformRotate et le définir à la transformation UIImageView. Cela prend soin de tout ce qui précède pour vous. Encore une fois, vous voudrez vérifier les limites d'arrêt.

+0

pourriez-vous s'il vous plaît fournir un exemple? C'est un toucher d'un doigt que je confirme: D – awlcs

Questions connexes