Text Rendering iOS - 渲染快速变化文本的最高效方式
Posted
技术标签:
【中文标题】Text Rendering iOS - 渲染快速变化文本的最高效方式【英文标题】:Text Rendering iOS - Most performant way to render fast changing text 【发布时间】:2014-12-22 12:00:52 【问题描述】:在 ios 中呈现快速变化的文本(每帧改变 10-15 个数字)最高效的方法是什么?这些是我到目前为止所做的尝试:
1) CATextLayer
+ CTFont
和 NSString
:非常快,但无法访问我需要的字距调整。 (如果有人知道如何让字距调整与CTFont
和没有NSAttributedString
一起工作,那也很酷,但这不是主要问题;)
2) CATextLayer
+ NSAttributedString
: 缓慢而滞后。与 1) 相比,我看到 FPS 大幅下降。在我的应用中,这个变化让 FPS 从 50-60 下降到 30。
3) 位图字体,使用UIImageViews
和UIImage
显示数字:也相当快,虽然不是很令人满意,因为iOS 中应该有更好/更自然的方式来有效地渲染字体。
编辑:
4) UILabel
+ NSString
- 相当快,但同样无法使用字距调整。
5) UILabel
+ NSAttributedString
- 又慢又迟钝。
渲染NSAttributedString
比渲染基本NSString
慢很多。这真的很令人沮丧,因为我现在需要NSAttributedString
提供的只是字母之间的间距。
【问题讨论】:
一个很好的以性能为导向的问题。顺便说一句,你是不是简单地尝试了一个 UILabel,看看苹果工程师做了什么? 谢谢,我刚试过(编辑成问题),只要你不使用我需要更改字距的属性文本,它就相当快了。 也许可以尝试使用带有单一字体纹理的 Sprite Kit,以便更快地对基于图像的字体进行位图位图处理——假设 Sprite Kit 批处理这些绘制调用并且擅长此操作。 SKView 到.... textscue。 您是否尝试过使用CFAttributedString
对CTFont
应用字距调整?
【参考方案1】:
Apple 最近在 iOS 中添加了 TextKit,您可以先检查一下:TextKit documentation。
【讨论】:
以上是关于Text Rendering iOS - 渲染快速变化文本的最高效方式的主要内容,如果未能解决你的问题,请参考以下文章
Unity渲染路径 Rendering Paths_2_Forward Rendering 正向渲染