In meiner iOS App habe ich in den Texten von mp3s, dass ich in einer scrollbaren nicht editierbaren Textansicht spiele. Ich möchte die Textansicht automatisch nach der Länge jedes MP3s scrollen. Wie kann ich es in Swift 3 machen?Swift 3 - Auto scroll UITextView nach mp3-Länge
Antwort
Alles, was Sie tun müssen, ist ein Timer
Zeitplan und berechnen, wo in der Update-Methode (der Selektor) blättern.
Irgendwo in Ihrer Klasse:
var timer = Timer()
func update() {
// Assuming you're using an AVAudioPlayer, calculate how far along you are
let progress = player.currentTime/player.duration
// Get the number of characters
let characters = textView.text.characters.count
// Calculate where to scroll
let location = Double(characters) * progress
// Scroll the textView
text.scrollRangeToVisible(NSRange(location: Int(location), length: 10))
}
Dann, wenn Sie den Timer starten wollen:
timer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(update), userInfo: nil, repeats: true)
Wenn der Song ist abgeschlossen, erlischt der Timer.
Große Antwort! Ich frage mich nur, dass das nicht mit den Lyrics synchronisiert wird, da sie nicht unbedingt mit einer konstanten Rate fließen werden. Er muss vielleicht eine Bibliothek von Timestamp-Markern mit dem Text erstellen oder so, dass die Texte genau mit dem Sound synchronisiert werden. – Antoine
Danke, dass es funktioniert hat! Und ja, @ Antoine hatte Recht, das Scrollen stimmte nicht mit dem Text überein. Ich habe das nicht durchdacht. Ich glaube nicht, dass es so funktionieren würde, wie ich es mir vorgestellt habe. Trotzdem danke – SergeH
Sie könnten Content gesetzt:
func autoScroll() {
let progress = currentTime/duration
let contentOffset = CGPoint(x: 0.0, y: textView.contentSize.height * progress)
textView.setContentOffset(contentOffset, animated: true)
}
Und Timer starten:
let timer = Timer(timeInterval: 0.5, target: self, selector: #selector(autoScroll), userInfo: nil, repeats: true)
RunLoop.current.add(timer, forMode: .commonModes)
- 1. Swift 3 - UITextView Gesamtkostenzähler
- 2. UITextView automatische Scroll nach unten
- 3. iPhone Auto-Scroll-UITextView, aber manuelle Scrolling auch
- 4. Swift 3 - UITextView wird nicht aktualisiert
- 5. UITextview Höhe in UITableview Swift
- 6. Swift - UITableViewCell Höhe nach UITextView Layout-Constraint
- 7. Auto scroll nach unten von einem Bildlauffenster
- 8. Auto Label Höhe in Swift 3
- 9. JetBrains deaktivieren Auto Scroll rechts
- 10. auto scroll horizontaler Linksprung
- 11. DIV auto scroll
- 12. Handle auto scroll
- 13. UITextView innerhalb von UIScrollView Scroll-Problem
- 14. Swift Dismiss UITextView Tastatur
- 15. Swift UITextView Event Listener
- 16. AutoKorrektur deaktivieren UITextView Swift
- 17. Swift 3 Farbe des ausgewählten Textes in UITextView ändern
- 18. Wie wird das Ergebnis in UITextView in Swift 3 ausgegeben?
- 19. Tastatur verstecken UITextView Swift 2
- 20. Wie Anzeige Scroll-Leiste für UITextView immer?
- 21. Sortieren nach Entfernung Swift 3
- 22. Swift 3: Dezimal nach Int
- 23. Nach Datum sortieren - Swift 3
- 24. Tkinter - Leinwand Textobjekt Auto-Scroll
- 25. Auto-Scroll von contenteditable verhindern
- 26. Auto-Scroll-Textfeld in iframe
- 27. Flash - Auto-Scroll-Text Bereiche
- 28. jQueryUI Auto Scroll auf Drag
- 29. UITextView in UIScrollView mit Auto-Layout
- 30. countElements in Swift 3
Haben Sie versucht, eine 'Timer' mit? – nighttalker
Verwenden Sie einen Timer und legen Sie den Bildlauf Ihres UITextView basierend auf der Position des Players fest. –
@nighttalker, können Sie mehr bitte bitte? Ich dachte über die Verwendung eines Timers aber konnte nicht wissen, wie man die Textansicht basierend auf der aktuellen Zeit des Liedes autoscroll – SergeH