Ich möchte das Flick-to-Scroll-Verhalten von UIScrollView reproduzieren, aber ich möchte diese Klasse nicht verwenden (oder nicht verwenden). Was kann ich tun?Wie kann ich das Scroll-Verhalten des iPhone UIScrollView in meiner eigenen benutzerdefinierten Ansicht reproduzieren?
Antwort
Okay, ich habe das beantwortet, indem ich meine eigene Bibliothek implementiert habe, die die Dynamik von UIScrollView erfasst.
Was an meinem Code nützlich ist, ist, dass er unabhängig vom Koordinatensystem, der Animationsrate und den von Ihnen verwendeten UI-Klassen ist. Es kann leicht in einer benutzerdefinierten Ansichtsklasse Ihrer Wahl verschachtelt werden.
Das standardmäßige Flick-to-Scroll-Verhalten des iPhone ist interessant. Wenn Sie Ihren Finger lange gedrückt halten und ihn in verschiedene Richtungen bewegen, werden Sie feststellen, dass nur die allerletzte Richtung zur Berechnung der Bildlaufbewegung verwendet wird.
Wenn Sie jedoch versuchen, diesen Code selbst zu erstellen, werden Sie schnell feststellen, dass die Verwendung der letzten beiden Punkte zur Berechnung der Bewegungsrichtung nicht ausreicht, um den Code zu schneiden. Stattdessen behält mein Code eine kurze Historie von Berührungen bei und verwendet lineare Interpolation, um zu bestimmen, wo die Berührung vor einiger Zeit gewesen wäre. Dieser interpolierte Punkt wird als Grundlage für die Berechnung des Bewegungsvektors verwendet. Dies führt zu einer sehr angenehmen Interaktion.
Der Code ist auf GitHub verfügbar, hier: http://gist.github.com/100855. Es wird unter der BSD-Lizenz veröffentlicht.
Sie haben innerhalb von 2 Minuten nach Ihrer Frage Ihre eigene Frage beantwortet - mit einem ziemlich komplizierten Code? Es ist interessanter Code, also OK! –
Ja, ich wusste nicht, ob das für Stack Overflow koscher war, aber seit ich entdeckt habe, dass ich nicht der Einzige bin, der danach sucht, dachte ich, es wäre hilfreich? Gibt es ein besseres Forum? –
Also, was ist mit UIScrollView hat nicht für Sie arbeiten? Diese Klasse ist ziemlich flexibel ...
Ich habe eine OpenGL-Ansicht für ein Spiel und ich wollte in der Lage sein, das Ansichtsfenster ähnlich wie bei UIScrollView zu steuern ... –
Dave, ich sehe dich answerd Ihre eigene Frage mit einigen Code haben, aber nicht Einstellung nicht der Sie folgende geben, was Sie brauchen:
myScrollView.bounces = YES;
myScrollView.pagingEnabled = YES;
myScrollView.directionalLockEnabled = YES;
, besonders es klingt, als ob Sie directionLockEnabled
erneut implementiert haben. Vielleicht zu verstehen, warum Sie UIScrollView nicht verwenden können, ist das interessantere Problem :-)
Siehe oben meinen Kommentar. Ich versuche, das Verhalten in einem Kontext zu reproduzieren, in dem UIScrollView nicht gehen kann (oder zumindest nicht gehen sollte.) –
(Und: Ich sollte darauf hinweisen, dass das, was ich getan habe, NICHT das Gleiche ist, als nur ein paar Eigenschaften zu setzen in einer Scroll-Ansicht, wenn ich das hätte tun müssen - nun, ich hätte es getan :-) –
... und ich bin interessiert, was das ist ;-) –
Das ist cool! Ich habe es in einer App verwendet, wo meine scrollbare Ansicht grafische Daten eines Tages in einem Bereich von 1902-2037 enthält, so dass ein UIScrollView nicht effizient wäre.
- 1. Verwenden meiner eigenen UIView in UIScrollView
- 2. Wie kann ich in meiner benutzerdefinierten Ansicht ein Retuschieren erkennen?
- 3. iPhone, reproduzieren den Lupeneffekt
- 4. Wie öffne ich iPhone Mail-Anwendung von meiner eigenen Anwendung?
- 5. Wie platziere ich Schaltflächen in meiner benutzerdefinierten Ansicht?
- 6. Wie kann ich ein UIScrollView in einem UIScrollView verschachteln, so dass der Benutzer das innere UIScrollView scrollen kann?
- 7. Wie kann ich das beigefügte Balkendiagramm in Tableau reproduzieren?
- 8. Wie kann ich Inertial Scrolling in einer benutzerdefinierten UIView imitieren, wenn ich UIScrollView nicht verwenden kann?
- 9. Wie greife ich aus meiner benutzerdefinierten Ansicht auf layout_height zu?
- 10. Wie bekomme ich das Homescreen-Verhalten von Drag in Bin, in meiner eigenen Anwendung?
- 11. In XCode, warum sind die benutzerdefinierten Ansichten meiner benutzerdefinierten Ansicht unter der benutzerdefinierten Ansicht?
- 12. iPhone SDK: Wie kann ich meiner Anwendung eine Bildlaufansicht hinzufügen?
- 13. Wie berühre ich UIScrollView?
- 14. iPhone: Wie zeichne ich in einer benutzerdefinierten Ansicht etwas über allem anderen in der Ansicht?
- 15. Wie kann ich meiner benutzerdefinierten Kartenmarkierung in Android Zeichenfolgen hinzufügen?
- 16. DataGridView Scrollverhalten
- 17. Wie kann ich akka Quarantysituation reproduzieren?
- 18. Wie kann ich dieses Format reproduzieren?
- 19. UIScrollView setContentSize bricht Ansicht mit Auto Layout
- 20. Wie funktioniert das reibungslose Scrollen in UIScrollView?
- 21. Wie kann ich eine TextView von einer benutzerdefinierten Ansicht ändern
- 22. Wie speichere ich Wert in meiner eigenen Sitzungsvariablen in Magento?
- 23. Wie kann ich das Bild im iPhone Fotoalbum speichern?
- 24. Wie kann ich NSError in meiner iPhone App verwenden?
- 25. Wie viele Bilder kann ich in meiner iPhone App zwischenspeichern?
- 26. iPhone UIScrollView Geschwindigkeitstest
- 27. Wie kann ich die Standard-Header für eine einfache UITableView reproduzieren
- 28. UIScrollView lags auf iPhone
- 29. das oberste Fenster meiner eigenen Anwendung nur erhalten - in C
- 30. iPhone UIScrollView - wie man einen Bildtitel bekommt
Hinweis: Die Frage bezog sich auf eine OpenGL-Ansicht – Thanks
Wahr, in _my_ Fall dachte ich über OpenGL-Ansichten. Siehe unten meine Antwort auf Roger Nolan - ich denke, es gibt auch viele interessante Nicht-OGL-Fälle. –