CGContextShowTextAtPoint:无效的上下文

时间:2010-05-26 18:30:17

标签: objective-c iphone quartz-2d

我想在每5秒后调用一个负责在屏幕上绘制文本的方法。这是我的代码

-(void) handleTimer: (NSTimer *)timer
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 2.0); 
    CGContextSetStrokeColorWithColor(context, currentColor.CGColor); 

    CGContextTranslateCTM(context, 145.0, 240.0);
    CGContextScaleCTM(context, 1.0, -1.0); 
    CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
    CGContextSetCharacterSpacing(context, 1);
    CGContextSetTextDrawingMode(context, kCGTextFillStroke);


    CGContextSetRGBStrokeColor(context, 0.5,0.5,1,1);
    CGContextShowTextAtPoint(context, 100, 100, "01", 2);
}

但是在调用此方法5秒后我收到此错误 CGContextShowTextAtPoint:无效的上下文

另一件事是如何显示更薄的字体?

2 个答案:

答案 0 :(得分:0)

据我了解,在绘制之前清除图形上下文总是一个好主意。

 CGContextRef context = UIGraphicsGetCurrentContext();
 CGContextClearRect(context, theRectInWhichYouWillBeDrawing);

答案 1 :(得分:0)

在绘制之前,您必须拥有上下文。将绘图代码放在drawRect中会自动为您执行此操作(当您继承UIView时,您会获得drawRect。)

您可以使用UIGraphicsBeginImageContext(CGSize size)创建自己的上下文,但可能会出现问题,确保您的上下文保持有效。

无论如何,我现在肯定有问题。知道更多这方面的人想要权衡一下吗?