有没有更快的方式来绘制文字?

时间:2010-05-28 16:53:50

标签: iphone

Shark抱怨这条线路的性能受到很大影响,占用了80%的CPU时间。我有一个经常更新的计数器,性能严重糟糕。

这是一个自定义的UILabel子类,带有-drawRect:已实现。每次计数器值更改时,都会用于绘制新文本:

[self.text drawInRect:textRect withFont:correctedFont lineBreakMode:self.lineBreakMode alignment:self.textAlignment];

当我评论这一行时,表现摇滚。它流畅而快速。所以Shark对此并没有错。但是我能做些什么来改善这个呢?也许更深入一级?这有什么意义吗?

大概绘制文字真的太可怕了......?

2 个答案:

答案 0 :(得分:2)

没有理由单个标签的绘制会导致如此巨大的性能损失。但是,如果您每秒更新超过30-60次,系统可能无法跟上。在这种情况下,您可以使用NSTimer仅以固定间隔执行绘图。毫无疑问,绘图文本很昂贵,但你几乎找到了绘图本身的最佳方式,除非标签只是一行,在这种情况下你可以使用稍微便宜的drawAtPoint:withAttributes:

答案 1 :(得分:2)

在下面,正在使用Quartz2D绘制文字。如果直接使用它,您可能会看到一些改进。