0

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

例如: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

}
4

1 回答 1

1

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

如果您drawRect:自己调用该方法,则不会将 CGContext 推送到上下文堆栈,因此UIGraphicsGetCurrentContext()将 return nil,您将收到您所看到的错误。

于 2013-10-05T21:48:15.890 回答