我是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?有谁能告诉我这种方案的最佳做法是什么?谢谢!
答案 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]];
}