首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替代sizeWithFont:方法

替代sizeWithFont:方法
EN

Stack Overflow用户
提问于 2010-03-03 13:05:10
回答 1查看 1K关注 0票数 3

我有一个类,它的工作是将文本解析成几个页面。我使用sizeWithFont:方法来识别一个页面何时结束而另一个页面何时开始。但不幸的是,由于需要解析的文本数量相当大,整个操作需要在后台线程上执行(完成需要几秒钟)。因此,有时我会在接口上获得可视化工件(UIKit不是线程安全的,但我同时从几个线程调用它),我很想摆脱它。

我需要摆脱在后台线程上使用sizeWithFont:。但是,这种方法似乎没有其他的选择。用Core Graphics找出文本宽度的唯一方法是使用苹果文档中所述的方法:

  1. 调用函数CGContextGetTextPosition以获得当前文本位置。
  2. 使用函数kCGTextInvisible将文本绘制模式设置为CGContextSetTextDrawingMode。
  3. 通过调用函数CGContextShowText在当前文本位置绘制文本来绘制文本。
  4. 通过调用函数CGContextGetTextPosition来确定最终文本位置。
  5. 从结束位置减去起始位置,以确定文本的宽度。

但我真的很担心这会导致巨大的性能损失。

有谁知道另一种找出文本宽度的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2010-05-12 16:47:19

如果您有可能针对iPhone OS3.2的应用程序,可以查看核心文本

尽管如此,注意整个Core文本库也不是完全线程安全的。从文件中:

多核考虑: Core文本中的所有单独功能都是线程安全的。字体对象(CTFont、CTFontDescriptor和关联对象)可以由多个操作、工作队列或线程同时使用。但是,布局对象(CTTypesetter、CTFramesetter、CTRun、CTLine、CTFrame和相关对象)应该在单个操作、工作队列或线程中使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2371402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档