为什么我用cgcontext得到这个错误

时间:2013-10-05 20:44:44

标签: ios cgcontext

我收到此错误,通常是当我长时间按下uitextfield并出现放大镜时 同时报告了许多此类错误

e.g。 :CGContextSetStrokeColorWithColor:无效的上下文0x0。这是一个严重的错误。该应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降低。此通知是礼貌的:请解决此问题。在即将到来的更新中,它将成为一个致命的错误。

我唯一的绘图代码如下

此代码有什么问题

- (void)drawRect:(CGRect)rect
{
// Drawing code

CGContextRef context = UIGraphicsGetCurrentContext(); //context
CGContextBeginPath (context);
CGContextSetLineWidth(context,3);
CGPoint center = CGPointMake(rect.size.width / 2, rect.size.height / 2);//get the view centre

//get the polygon points

CGContextMoveToPoint(context, center.x-70,rect.size.height - 140 );
CGContextAddLineToPoint(context, center.x + 130, rect.size.height - 140);
CGContextAddLineToPoint(context, center.x - 70, 100);
CGContextAddLineToPoint(context, center.x- 70, rect.size.height - 140);
CGContextAddLineToPoint(context, center.x - 50, rect.size.height -140);
CGContextAddLineToPoint(context, center.x - 50, rect.size.height - 160);
CGContextAddLineToPoint(context, center.x - 70, rect.size.height - 160);


CGContextClosePath(context);//close the path
//[[UIColor clearColor] setFill];//set the colour for fill
[[UIColor blackColor] setStroke];//set the line color
CGContextDrawPath (context, kCGPathStroke);//draw

}

1 个答案:

答案 0 :(得分:1)

您是那个调用drawRect:方法的人吗?您不应该这样做,您应该致电setNeedsDisplay,应用程序将在适当的时候致电drawRect:

如果您自己调用drawRect:方法,则不会将CGContext推送到上下文堆栈,因此UIGraphicsGetCurrentContext()将返回nil,您将收到错误信息'重看。