2009-07-16 2 views
2

je essaie d'animer une sorte de UIView draggable où le comportement doit être quelque chose comme ceci:Comment puis-je me déplacer et glisser un UIView avec des touches et des balayages?

  • Faites glisser le long de l'écran suivant le contact de l'utilisateur.
  • Détecter une touche tactile et glisser automatiquement avec une vitesse initiale et une accélération négative qui fait s'arrêter après un certain temps.

Quelque chose comme se déplacer autour d'une photo et ensuite à travers d'un côté de l'écran.

Des conseils à ce sujet?

Répondre

5

Un similar question a été demandé (par moi) il y a environ 3 semaines. Bien que certaines des réponses que j'ai reçues soient un peu en retrait, le meilleur conseil était: 1- étudier l'exemple d'Apple pour savoir comment toucher un objet et le faire glisser. Et 2 vous « jeter » l'objet en comparant fondamentalement la [contact locationInView: self.view] au [contact previousLocationInView: self.view] dans touchesEnded (peut également stocker une référence au premier contact dans touchesBegan mais je trouve cela moins utile que l'utilisateur peut faire une pause) en utilisant l'horodatage de chacun, vous pouvez déterminer la direction de balayage (flick) et le taux de vitesse et les utiliser pour envoyer votre petit UIView autour. Evidemment vous voulez appliquer des forces ("friction") ou quoi que ce soit pour le ralentir afin qu'il ne vole pas à droite de votre écran ...

+0

merci. Comment puis-je appliquer ces forces de "friction"? devrais-je utiliser un CAKeyframeAnimation avec des horaires différents? Comment puis-je générer ces horaires? Je suis un peu perdu dans le monde des animations. – nico

+0

mis à jour Lien: [MoveMe] (https://developer.apple.com/library/content/samplecode/MoveMe/Introduction/Intro.html) –

0

Je ne suis pas sûr. Mais peut-être pouvez-vous utiliser la propriété de décélération de l'objet UIScrollView. Placez votre imageView dans UIScrollView et utilisez cette propriété. C'est une variable BOOL et la valeur retournée est OUI si l'utilisateur ne fait pas glisser le contenu mais que le défilement est toujours en cours.

+0

désolé, pas ce que je cherche – nico

0

Jetez un oeil à l'exemple de projet MoveMe d'Apple (un enregistrement peut être requis). Il montre comment avoir une plaque de suivre un contact ainsi que se transformer en fonction de différentes touches. Essentiellement, l'idée est de remplacer les méthodes tactiles UIResponder pour analyser le type de toucher reçu par l'appareil, puis de déplacer l'objet pour suivre le doigt de l'utilisateur ou lui donner une vitesse dans une direction selon qu'il était ou non une traînée lente ou un balayage. Vous pouvez ensuite utiliser Core Animation pour animer les modifications apportées au cadre de l'objet.

+0

mis à jour Lien: [MoveMe] (https: //developer.apple.com/library/content/samplecode/MoveMe/Introduction/Intro.html) –

Questions connexes