Shark抱怨这条线路的性能受到很大影响,占用了80%的CPU时间。我有一个经常更新的计数器,性能严重糟糕。
这是一个自定义的UILabel子类,带有-drawRect:已实现。每次计数器值更改时,都会用于绘制新文本:
[self.text drawInRect:textRect withFont:correctedFont lineBreakMode:self.lineBreakMode alignment:self.textAlignment];
当我评论这一行时,表现摇滚。它流畅而快速。所以Shark对此并没有错。但是我能做些什么来改善这个呢?也许更深入一级?这有什么意义吗?
大概绘制文字真的太可怕了......?
答案 0 :(得分:2)
没有理由单个标签的绘制会导致如此巨大的性能损失。但是,如果您每秒更新超过30-60次,系统可能无法跟上。在这种情况下,您可以使用NSTimer
仅以固定间隔执行绘图。毫无疑问,绘图文本很昂贵,但你几乎找到了绘图本身的最佳方式,除非标签只是一行,在这种情况下你可以使用稍微便宜的drawAtPoint:withAttributes:
答案 1 :(得分:2)
在下面,正在使用Quartz2D绘制文字。如果直接使用它,您可能会看到一些改进。