Frage

Ich habe einige UIViews, die der Benutzer in der Lage sein kann, über den Bildschirm "zu flicken". Sie sind keine Scrollansichten. Sie enthalten einfach ein Rasterbild (PNG). Kann mich jemand auf einen Beispielcode usw. verweisen, um mich zu starten? Etwas mehr schwereres als "Moveme" da draußen, das dazu beiträgt, einen "Flick" (gegen einen "Nudge" oder einen Drag & Drop) zu erkennen und dann die Aussicht in Richtung des "Flicks" abzuräumen?

OpenGL wahrscheinlich Overkill. Wenn möglich, würde ich gerne im Bereich der Kerngrafiken/Animation bleiben.

War es hilfreich?

Lösung

Um die Berührung bei einem View Controller zu erkennen, können Sie die Methoden von TouchesBegan und Touchesended verwenden, die Berührung von TouchesBegan speichern, und wenn sich die Berührung mehr als links oder rechts bewegte, war es ein Streifen, kein Schubs an die links oder rechts.

Andere Tipps

Ich würde sagen, dass die Easyeieist -Art, dies zu implementieren, darin besteht, Ihre Ansichten in einen UiscrollView -Container mit aktiviertem Paging zu versetzen und sich um alle "Flicking" -Aktionen Sorgen zu machen. Funktioniert großartig für mich.

Sie können sogar mit einigen zusätzlichen Anstrengungen faul laden, die Bilder laden.

Ich denke, Sie könnten dies leicht erreichen, indem Sie die Antwort der Nazgul42 und die Zeit zwischen den beiden genannten Ereignissen überprüften. Kurze Zeit und lange Entfernung zusammen konnten dann als Flick interpretiert werden. Sie können auch die Richtung des Streifens bestimmen, indem Sie die Koordinaten beider Berührungsereignispunkte berechnen.

Angenommen, Sie haben eine UIView genannt aView und zwei UIImageViews, page1 und page2. Angenommen, Sie haben page1 bereits als Unteransicht in aView, dieser Code wird von Flip von flippen page1 zu page2:

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

Ich habe hier einen Thread gefunden, obwohl die Methode mich Sorgen macht -

http://discussions.apple.com/message.jspa?messageId=7862186

Es berücksichtigt weder Geschwindigkeit noch Zeitstempel. Nur die Entfernung seit dem letzten Ereignis -Update. Wenn Apple jemals die Frequenz/Granularität von Ereignisaktualisierungen geändert hat, könnte dieser Code brechen.

Versuchen Sie es zu verwenden UIPanGentureRecognizer Beispielcode :

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

dann

- (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];}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top