【发布时间】:2010-03-03 13:05:10
【问题描述】:
我有一个类,它的工作是将文本解析成几页。 我使用 sizeWithFont: 方法来确定一页何时结束而另一页何时开始。 但不幸的是,由于需要解析的文本量很大,整个操作需要在后台线程上执行(需要几秒钟才能完成)。因此,有时我会在我的界面上看到视觉伪影(UIKit 不是线程安全的,但我同时从多个线程调用它),我很想摆脱它。
我需要摆脱在后台线程上使用 sizeWithFont:。但是这种方法似乎没有替代方法。使用 Core Graphics 找出文本宽度的唯一方法是使用苹果文档中所述的方法:
- 调用函数CGContextGetTextPosition获取当前文本位置。
- 使用函数 CGContextSetTextDrawingMode 将文本绘制模式设置为 kCGTextInvisible。
- 通过调用函数CGContextShowText在当前文本位置绘制文本来绘制文本。
- 通过调用函数 CGContextGetTextPosition 确定最终文本位置。
- 从结束位置减去开始位置以确定文本的宽度。
但我真的很担心这会导致巨大的性能损失。
有谁知道另一种确定文本宽度的方法吗?
【问题讨论】:
标签: iphone cocoa-touch uikit core-graphics