使用Quartz绘制/移动文本的最佳做法是什么?

时间:2010-12-03 11:57:10

标签: objective-c object text drawing quartz-graphics

我是Iphone开发的新手,我想实现一个简单的应用程序,可以在视图中显示和移动某些文本。所以我使用以下代码来实现主循环:

- (id)initWithCoder:(NSCoder*)coder {

 [NSTimerscheduledTimerWithTimeInterval:(NSTimeInterval)((1.0 / 30.0)) 
    target:selfselector:@selector(mainLoop) userInfo:nilrepeats:TRUE];
 }  
-(void) mainLoop {

// Do some updates
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {

   // Draw many strings like this ...

    UILabel *label = [[UILabel alloc] init];
label.textColor = color;
label.font = font;
label.text = character;
CGRect rect = CGRectMake(posX, posY, width, height);
[label drawTextInRect:rect];
}

但是当屏幕上有超过100个文本时,屏幕刷新会很慢而且不平滑。我想知道我是否正在以正确的方式进行绘图?我在网上搜索了很多文件,但没有找到答案。我发现很多方法可以在上下文中绘制文本,但我不知道应该遵循哪些方法。有一点是,我需要使用UILabel,因为我需要设置颜色。 我的代码有问题吗?我应该使用SubView绘制然后将addView添加到主视图吗?或者我应该使用CGLayer?有谁能告诉我这种方案的最佳做法是什么?谢谢!

1 个答案:

答案 0 :(得分:0)

我已经找到了答案,我使用NSString:drawInRect而不是UILabel:drawTextInRect:

-(void)drawRect:(CGRect)rect  
{    
 // Draw many strings like this ...    
 CGContextSetRGBFillColor (context, 1.0, 1.0, 1.0, 0.5);   
 CGRect rect = CGRectMake(x, y, [self getSizeX], [self getSizeY]); 
 [character drawInRect:rect withFont:[UIFont fontWithName:@"Courier" size:fontSize]];
}