如何在 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 中像提词器一样快速滚动文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Objective-C中像Twitter一样显示预览

如何在 iOS 中像 UITabBarItem 一样设计 UIButton?

如何在 Swift 中像数组一样访问图像资源

如何在 jupyter 中像 pandas Dataframe 一样打印 Pyspark Dataframe

如何在 Python3 中像 printf 一样打印?

如何在Objective C中像Marquee Tag一样为UIImage设置动画