Question

J'ai des uiViews que j'aimerais que l'utilisateur puisse "passer" à l'écran. Ils ne font pas de vues de défilement. Ils contiennent simplement une image raster (PNG). Quelqu'un peut-il m'indiquer un exemple de code, etc. pour me permettre de démarrer? Quelque chose d'un peu plus lourd que "Moveme" qui aide à détecter un "film" (vs un "coup de pouce" ou une traînée et une goutte), puis porte la vue dans le sens du "film"?

OpenGL probablement exagéré. Si possible, je voudrais rester avec dans le domaine des graphiques / animations de base.

Était-ce utile?

La solution

Pour détecter le toucher, dans un contrôleur de vue, vous pouvez utiliser les méthodes TouchesBegan et TouchEsed, stocker le toucher de TouchesBegan, et si le toucher se déplaçait plus qu'une certaine quantité à gauche ou à droite, c'était un film, pas un coup de pouce pour le coup gauche ou droite.

Autres conseils

Je dirais que la façon facile de mettre en œuvre cela serait de mettre vos opinions dans un conteneur UiscrollView avec la pagination et de laisser s'inquiéter de toutes les actions de "déclenchement". Fonctionne très bien pour moi.

Vous pouvez même avec des efforts supplémentaires avoir des vues paresseuses charger les images.

Je suppose que vous pourriez y parvenir facilement en prenant la réponse Nazgul42 et en vérifiant également le temps entre les deux événements mentionnés. Une courte durée et une longue distance combinées pourraient ensuite être interprétées comme un film. Vous pouvez également déterminer la direction du film en calculant les coordonnées des deux points d'événement tactile.

Supposons que vous ayez un UIView appelé aView et deux UIImageViews, page1 et page2. Supposons que tu as page1 Déjà comme sous-vue dans aView, ce code se retournera à partir de page1 à page2:

[UIView beginAnimations:@"someId" context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:aView cahe:YES];
[page1 removeFromSuperview];
[aView addSubview:page2];
[UIView commitAnimations];

J'ai trouvé un fil ici, bien que la méthode m'inquiète -

http://discussions.apple.com/mesage.jspa?MessageId=7862186

Il ne prend pas compte de la vitesse ou des horodatages; Juste la distance depuis la dernière mise à jour de l'événement. Si Apple changeait la fréquence / granularité des mises à jour d'événements, ce code pourrait se casser.

essayer d'utiliser UIPanGentureRecognizer Exemple de code:

UIPanGestureRecognizer *imageGesture = [[UIPanGestureRecognizer alloc]
                                         initWithTarget:self
                                         action:@selector(imageDragged:)];
[imageView1 addGestureRecognizer:imageGesture];

alors

- (void)imageDragged:(UIPanGestureRecognizer *)gesture{
UIImageView *imageView = (UIImageView *)gesture.view;
CGPoint translation = [gesture translationInView:imageView];

imageView.center = CGPointMake(imageView.center.x + translation.x,
                               imageView.center.y + translation.y);
imageView2.center = imageView.center;
imageView3.center = imageView.center;

[gesture setTranslation:CGPointZero inView:imageView];}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top