2009-10-27 7 views
0

J'ai un graphique linéaire que j'ai dessiné dans Quartz, et une «bulle» UIView que je voudrais idéalement apparaître lorsque l'utilisateur touche la ligne de tracé unique, et déplace leur doigt le long de celui-ci. La bulle affiche des informations supplémentaires sur le graphique. Je souhaite "attacher" l'UIView au graphe CGPath, mais j'ai des difficultés conceptuellement à trouver la meilleure façon de le faire. Je sais que vous pouvez animer une vue le long d'un CGPath, mais cela ne semble pas fonctionner pour moi, car l'utilisateur doit «scrub» le long du graphique lui-même avec son doigt plutôt qu'avec une animation automatique.Déplacement d'un UIView le long d'un CGPath en fonction de la position tactile

Quelqu'un at-il des suggestions d'une bonne approche?

Répondre

1

Peut-être n'avez-vous pas besoin de l'animer. Les événements tactiles volent assez rapidement - peut-être que si vous déplacez simplement la vue vers l'emplacement approprié par rapport au toucher sans animation, le mouvement sera suffisamment fluide. Si ce n'est pas suffisant, vous devrez animer le segment de graphique à partir de l'emplacement actuel de la vue (voir Calayer presentationLayer) jusqu'à l'emplacement souhaité. La clé est que vous allez animer chaque fois que vous recevez un événement tactile (et toutes les animations précédentes seront annulées).

1

Comme Neil l'a dit, votre meilleur pari est de simplement bouger avec les événements tactiles, il aura l'air lisse si tout ce que vous faites est de déplacer une vue. Utilisez [aTouch locationInView: view] pour obtenir la position du contact, puis trouvez le point le plus proche sur le chemin (utilisez peut-être la valeur x et recherchez la valeur y sur le chemin du x).