如何加快UITextView的更新速度?

时间:2012-11-28 14:03:14

标签: objective-c ios performance uikit uitextview

我有一个计算器应用程序,其中包含由UITextView组成的“会计磁带”。一旦磁带上有大约50-100行,文本视图的更新速度很慢 - 设置新内容(50-100行文本)很容易需要100毫秒或更长时间。问题是我无法将此延迟移到后台,因为UIKit坚持要在主线程上调用。

我该怎么办?关于唯一想到的是使用自定义UIView子类来重写磁带,这种子类更适合于任务,但我不是非常渴望这样做,因为这是很多工作和{{ 1}}除了这个问题之外还可以正常工作。

2 个答案:

答案 0 :(得分:1)

当我只处理50行时遇到问题我感到非常惊讶,所以我坦率地想知道这里是否有其他事情发生。我将通过Instruments中的“Time Profiler”运行代码并确认问题确实是UITextView的更新而不是其他内容。在放弃UITextView

之前,可能需要进行一些研究

但是让我们假设您决定需要重新开始(我觉得不太可能)并且不使用UITextView。我可能会建议利用现有控制,例如一个UITableView在单元格之间没有分隔符,或者,如果最坏的情况发生最坏的情况,则为UIScrollView,其中磁带上的每一行都是UILabel并且您执行UITableView - 样式的出列滚动屏幕的标签。一堆选项比从头开始要好一些。

答案 1 :(得分:0)

假设UITextView真的很慢而不是其他东西,我建议你将textview的文本改为只有那部分可见的部分。滚动到外面的所有文本都不需要保留在textview中。当然,如果需要,你必须实现自己的滚动,或者为删除的滚动使用空白行,这样滚动行为就会保持不变。