如何在 UITextView 中像提词器一样快速滚动文本?
Posted
技术标签:
【中文标题】如何在 UITextView 中像提词器一样快速滚动文本?【英文标题】:How to scroll text in UITextView like teleprompter in swift? 【发布时间】:2018-11-17 11:20:08 【问题描述】:我想像提词器滚动一样滚动我的文本。我已经阅读了有关 UIDynamicAnimation
的信息,但不清楚 UITextView
是否有多行。
感谢您的建议或编写 sn-ps 代码以实现此目的。
【问题讨论】:
【参考方案1】:使用递归方法,我们可以使用UIView.animate(withDuration:animations:completed)
为每一行滚动设置动画,直到到达 textView 的末尾。
func animateRowWith(duration: TimeInterval, rowHeight: CGFloat)
if self.textView.contentOffset.y < self.textView.contentSize.height - self.textView.frame.size.height
UIView.animate(withDuration: duration, animations:
self.textView.contentOffset = CGPoint(x: self.textView.contentOffset.x, y: self.textView.contentOffset.y + rowHeight)
) (_) in
self.animateRowWith(duration: duration, rowHeight: rowHeight)
调用它:
animateRowWith(duration: 1.0, rowHeight: self.textView.font?.lineHeight ?? 0)
.
请注意,每行滚动后都会有延迟。
【讨论】:
这也行,戴克。但我正在寻找UIDynamicAnimation
解决方案。但无论如何感谢您的回答。
嗨@SunilTarge,您能回答您自己的问题并告诉我们您是如何使用UIDynamicAnimation 做到的吗?
@ozd 我没有找到处理 UITextView 的方法,所以我尝试使用 UILabel 设置 sizetofit 属性并使用 UIPushBehaviour 对其进行动画处理。它工作得很好,但是在 UIPushBehaviour 进行时,用户无法通过向上/向下滑动来控制向上滚动。如果您找到任何解决此问题的替代方案,也可以在这里回答。以上是关于如何在 UITextView 中像提词器一样快速滚动文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中像 UITabBarItem 一样设计 UIButton?