UIPanGestureRecognizer - Ansicht bewegen sofort
Alles was ich brauche, es zu bewegen-Ansicht um, basierend auf pan-Geste.
Das problem ist, dass es passiert nicht sofort, ebenso wie Apple Maps, wenn ich legte meine finger auf einen Punkt, und bewegen Sie ihn schnell in eine beliebige Richtung, wird die Ansicht bewegen, mit einer Verzögerung, was bedeutet, dass ich in der Lage zu sehen, der Punkt, dass ich meine finger auf, und das ist, was ich nicht will.
Vielleicht ist es unmöglich, aufgrund von hardware-Einschränkungen, da im simulator funktioniert es einwandfrei.
Oder vielleicht gibt es einen besseren Weg, das weiß ich nicht.
Danke.
- (IBAction)pan:(UIPanGestureRecognizer *)sender
{
CGPoint center = [sender locationInView:sender.view];
self.myView.center = center;
}
- - (IBAction)pan:(UIPanGestureRecognizer *)sender { CGPoint center = [sender locationInView:Absender.Ansicht]; self.meineansicht.center = center; }
- Tut mir Leid, ich weiß nicht, wie zu halten Einzug.
- Was ist an dieser Meinung? Wenn ziemlich kompliziert, können Sie die Option "Rastern", und sehen, wenn dieses es regelt.
- Diese Ansicht hat nur 2 UIImageView ' s (eine der UIImageView ist animiert, einfach nur skalieren, wie pulsieren). Im Grunde myView ist die gleiche wie die Blaue Kugel mit pulsierender Kreis, die Sie auf Karten für Ihre aktuelle Lage. Und was ich will, ist bewegen Sie den ball um zu machen, es bleibt immer unter den Fingern des Nutzers. So sollte es niemals möglich sein zu sehen, die Mitte des Balles, wenn der Benutzer Pfannen.
- Die pulsierende animation, während keine Last in der standard-Operationen, haben einen wesentlichen Einfluss auf das ziehen der ganzen Sache. Pausieren Sie die pulsierende und sehen, ob sich das Verhalten verbessert. Selbst einfache Dinge wie das nicht-gerasterten Schatten kann überraschend problematisch. Sie brauchen, um die Dinge zu vereinfachen (zumindest während der pan). Auch ein Beispiel von Rastern die Ansicht (aber auch angehalten, die pulsierende animation, auch).
- Danke, sobald ich nach Hause komme, werde ich versuchen, Sie zu entfernen die animation aus dem Kreis beim schwenken. Btw, gibt es einen anderen Weg, um die animation anzuhalten, ohne es aus der Sicht?
- Ich aktualisiert meine Antwort mit animation Aufhängung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als ich zuerst antwortete, war ich davon ausgegangen, dass es etwas kompliziert um die Ansicht ziehen (z.B. eine große
CALayer
Schatten, die zu rechenintensiv). Daher meine ursprüngliche Antwort unten. Aber in einer späteren Austausch von Kommentaren, es wurde entdeckt, dass eine der Tasten hatte eine pulsierende animation, die eher das problem zu sein. Die animation ausgesetzt werden sollte während das ziehen der Ansicht, wenn die Drag-performance ist nicht akzeptabel. Also:Klar, dies kann kombiniert werden mit der Rasterung des Bildes, unten diskutiert, aber ich würde versuchen, die Aussetzung der animation, wie oben, zuerst.
Original Antwort:
Wenn die view gezogen wird, ist überhaupt nicht aufwendig, Sie könnten versuchen, Rastern es.
Hinzufügen
QuartzCore.framework
zu Ihrem Ziel "Link-binary mit Bibliotheken" Einstellungen.Anpassen und dann die Quelle zu Rastern entsprechend.
Wie:
Als ein beiseite, ich würde vorschlagen, das speichern der
originalCenter
wie dieser code funktioniert, so dass, wenn Sie schnappen Sie sich die Ansicht gezogen wird, ein wenig aus der Mitte, es wird nicht springen jarringly auf Sie.UIImageView
/UIButton
perfekt? Ist es gesetzt, zu skalieren oder nur center?position
Eigenschaft deslayer
und ausgeschaltet implizite Animationen, und ich sah noch die Verzögerung. Klar mitbringSubviewToFront
und sicherzustellen, dass Sie haben keine Transparenz hilft, aber ich sehe immer noch die gleiche bescheidene Verzögerung sehe ich in allen integrierten apps. Sie sagen Maps ist gut, aber ich sehe die gleiche Verzögerung in meiner app wie ich dort sehen.translation
, abervelocity
auch), aber spielen, um mit, es ist vielversprechend, aber schwer zu machen es glatt. (Seufz.)Versuchen, deaktivieren Animationen, wenn Sie den neuen Wert für den Mittelpunkt.
Wenn dir das hilft, könnte versuchen, Sie glatt mit schneller animation.
Könnte man auch versuchen, deaktivieren Sie die Animationen wie hier beschrieben:
Explizit deaktivieren UIView animation iOS4+
Kurz:
Wenn es Ihnen gelingt, deaktivieren Sie alle Animationen während der Repositionierung, es liegt an der Geschwindigkeit der hardware und dem code.