Apples iPod (Musik) App hat einen Schieberegler (UISlider, ich nehme an) mit variablen Scrubbing-Geschwindigkeiten: je weiter weg von dem Schieberegler vertikal ziehen, desto kleiner ist der Anteil Ihrer horizontalen Ziehgeschwindigkeit, die sich in der Wertänderung des Schiebereglers widerspiegelt. Hat jemand herausgefunden, wie man dieses Verhalten dupliziert?UISlider mit variablen Scrubbing-Geschwindigkeiten (wie iPod App)
Antwort
Gute Frage, die mich inspiriert hat, eine Lösung zu finden. Ich habe eine Klasse namens OBSlider erstellt, die variable Scrubbing-Geschwindigkeiten unterstützt.
Die Lösung in Kürze: Unterklasse UISlider, überschreiben -continueTrackingWithTouch:withEvent:
und die Berechnung der Änderung von self.value
abhängig von der Bewegung der Berührung selbst vornehmen. Dadurch können Sie den Faktor, mit dem Sie die Touch-Bewegung multiplizieren möchten, frei beeinflussen, um zum neuen Slider-Wert zu gelangen.
Für Details lesen Sie bitte meinen Blogpost: OBSlider, a UISlider subclass with variable scrubbing speed.
Gute Arbeit Ole! Ich habe ein paar kleinere Änderungen vorgenommen, um die Funktionsweise des iPod App Sliders zu verbessern, wenn ich den Finger näher an den UISlider ranziehe! Grundsätzlich handle ich mit einer Variablen, um den Wert zu messen, der der Fingerposition entspricht, und wenn der Benutzer näher kommt, wende ich eine andere Formel an (die nicht perfekt ist und viel verbessert werden könnte).
Meine Gabel ist hier verfügbar: http://github.com/sylverb/OBSlider
@Sylverb: Ich habe deine Antwort hier erst vor einem Moment gesehen und ich habe nur ein paar Modifikationen vorgenommen, damit es sich mehr wie der iPod verhält. Werde jetzt deine Änderungen überprüfen, vielleicht möchtest du dir meine ansehen. –
@Ole Begemann: Es sieht immer noch ganz anders als der iPod-Player-Schieberegler: - die Positionsänderung sollte nur auftreten, wenn der Benutzer näher an den Schieberegler kommt. In Ihrer Implementierung tritt die Änderung auf, wenn y Koordinaten ändert - die Schieberegler-Änderung scheint die scrubbingSpeed-Schritte zu folgen, statt linear zu sein! Meine Modifikationen sind noch nicht perfekt (die Formel, um den Einfluss der y-Koordinate zu integrieren ist nicht perfekt), aber es hat ein Verhalten ähnlich dem im ipod-Player! – Sylverb
Sie haben Recht, ich sollte den Wert nicht ändern, wenn Sie vom Schieberegler wegziehen. –
- 1. Wie erstelle ich einen iPod-ähnlichen UISlider
- 2. ios: spezifischer Flip-Effekt - wie iPod-App
- 3. iPod-Lautstärke beeinflusst App-Lautstärke
- 4. Lautstärkeregler mit UIslider Iphone?
- 5. UISlider, Folie zum Entsperren
- 6. Animierte Sequenz mit Uislider
- 7. Incomprehensible app Absturz auf altem iPod/iPhone
- 8. Wie anpassen UISlider Höhe
- 9. UISlider mit Inkrementen von 5
- 10. Starten der iPod App von innerhalb Ihrer eigenen App
- 11. Individuelle UISlider
- 12. MPMusicPlayerController: Der iPod hört auf, Benachrichtigungen zu senden, wenn die iPod App im Hintergrund beendet wird
- 13. Wie setze ich UISlider vertikal?
- 14. Die iPod App reagiert nicht mehr, nachdem der iPod aus dem Standby-Modus zurückkehrt
- 15. UISlider innen UIPageViewController
- 16. Benutzerdefinierte UISlider funktioniert nicht
- 17. AVaudioplayer Audio-Player progess wie Uislider abstürzt
- 18. iPod-Interaktion
- 19. Implementieren der iPod-Wiedergabe
- 20. Wie kann ich den UISlider-Track ausblenden?
- 21. Farbe des iPhone/iPod
- 22. Helligkeit des Bildes mit UISlider erhöhen/verringern?
- 23. Access iPod Musikordner
- 24. UISlider Layout ignorieren Breite
- 25. Xcode: iPod Touch Simulator?
- 26. UISlider setValue "Leaking"
- 27. UILabel über UISlider Thumb
- 28. eine Navigationstaste erstellen wie die iPod-Taste
- 29. Touch Zielgröße von UISlider mit Swift erhöhen
- 30. Fehler bei dem Installieren App auf dem iPod/iphone
Sehr schön. Es macht nicht ganz das, was der iPod App-Schieberegler tut - beachten Sie, wenn Sie in einiger Entfernung vom iPod App Scrubber ziehen und weiter nach oben zum Schieberegler ziehen, bewegt sich der Daumen auf Sie zu, bis Sie am Schieberegler ankommen. Sie haben jedoch auf jeden Fall gezeigt, welche Werte manipuliert werden müssen. (Auch ich überschreibe 'continueTrackingWithTouch: withEvent:' und setze 'self.value', aber ich habe einfach nicht das richtige Verhalten bekommen.) – matt
@matt: Ja, mir ist aufgefallen. Ich bin mir nicht sicher, ob ich das Verhalten des iPods besser finde. –
@matt: Ich habe den Code so geändert, dass er sich mehr wie der Schieberegler in der iPod App verhält. –