Анимация прокрутки, обрезка текста (swift3)
Мой код в основном является телесуфлером, проблема в том, что когда код, скажем, около 10 строк, телесуфлер работает отлично, но при добавлении 20 строк верхние строки обрезаются. См. Фото Теперь эта анимация кода применяется и первые 4 строки обрезаются.
extension UITextView {
func numberOfLines() -> Int {
let layoutManager = self.layoutManager
let numberOfGlyphs = layoutManager.numberOfGlyphs
var lineRange: NSRange = NSMakeRange(0, 1)
var index = 0
var numberOfLines = 0
while index < numberOfGlyphs {
layoutManager.lineFragmentRect(
forGlyphAt: index, effectiveRange: &lineRange
)
index = NSMaxRange(lineRange)
numberOfLines += 1
}
return numberOfLines
}
}
import UIKit
var yPosLabel : CGFloat!
var xPosLabel : CGFloat!
class ViewController: UIViewController {
@IBOutlet var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
yPosLabel = self.textView.frame.origin.y
xPosLabel = self.textView.frame.origin.x
}
func textViewDidBeginEditing(textView: UITextView) {
if textView.textColor == UIColor.black {
textView.text = nil
textView.textColor = UIColor.black
}
}
func textViewDidEndEditing(textView: UITextView) {
if textView.text.isEmpty {
textView.text = ""
textView.textColor = UIColor.black
}
}
@IBAction func play(_ sender: Any) {
let duration = Double(textView.numberOfLines() / 2)
UIView.animate(withDuration: TimeInterval(duration)) {
let contentSize = self.textView.contentSize
let contentInset = self.textView.contentInset
let textViewBounds = self.textView.bounds
let newContentOffset = CGPoint(
x: contentSize.width + contentInset.right - textViewBounds.width,
y: contentSize.height + contentInset.bottom - textViewBounds.height
)
self.textView.contentOffset = newContentOffset
}
}}