是否有比-drawInRect更快的东西:withFont:lineBreakMode:alignment:?

时间:2010-04-23 18:22:01

标签: iphone

Shark告诉我这种方法会受到巨大的性能影响。就像我表格中的80%一样。我所做的只是每个单元格绘制两个标签(每页约8个)。滚动期间。我drawInRect:用那个。

有更好的方法吗?喜欢直接画到某层?

1 个答案:

答案 0 :(得分:5)

您可以使用以下代码快速绘图:

CGContextSetStrokeColorWithColor(context, strokeColor); 
CGContextSetFillColorWithColor(context, strokeColor);

CGContextSelectFont(context, "Helvetica", fontSize, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetTextPosition(context, 0.0f, round(fontSize / 4.0f));
CGContextShowText(context, [text cStringUsingEncoding:NSMacOSRomanStringEncoding], strlen([text cStringUsingEncoding:NSMacOSRomanStringEncoding]));     

然而,iPhone上的Helvetica字体的Mac Roman编码缺少许多非英文字符的符号,所以我认为你坚持使用NSString绘图方法,除非你想在iPhone OS中升级到Core Text 3.2。

要检查并查看您的字符串是否可以使用Mac罗马字符集表示,请使用以下内容:

if ([text canBeConvertedToEncoding:NSMacOSRomanStringEncoding])