Je travaillais avec un "spin the bottle" -app hier. Sur la fenêtre, j'ai un ImageView avec une bouteille qui est censée répondre à des touches et tourner la façon dont l'utilisateur glisse son doigt. J'ai eu du mal à faire pivoter mon ImageView pendant les événements tactiles (TouchesBegan, Touchesoved, TouchesEnd). J'ai utilisé ce code dans TouchesMoved pour trouver l'angle dans lequel tourner l'image.
public override void TouchesMoved (NSSet touches, UIEvent evt)
{
PointF pt = (touches.AnyObject as UITouch).LocationInView(this);
float x = pt.X - this.Center.X;
float y = pt.Y - this.Center.Y;
double ang = Math.Atan2(x,y);
// yada yada, rotate image using this.Transform
}
CECI EST IMPORTANT! Lors de la rotation de l'ImageView, même les modifications des coordonnées y 0 x &. Donc toucher la même zone tout le temps me donnerait des valeurs différentes dans les points pt et prePt. Après réflexion, googeling et lecture, j'ai trouvé une solution simple au problème. Le "SuperView" -property de l'ImageView.
PointF pt = (touches.AnyObject as UITouch).LocationInView(this.SuperView);
Avoir ce petit changement en place a rendu beaucoup plus facile, non je peux utiliser le UITouch-metohs LocationInView et PreviousLocationInView et obtenir le droit x & y coordonne. Elle fait partie de mon code. L'espoir qui a aidé quelqu'un à passer des heures sur la façon de comprendre comment faire flipper tourner une bouteille! :)