我在loadView方法中编写了以下代码。
//draw grid lines
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat color[4] = {.5,0.5,1.0,1.0};
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColor(context, color);
CGRect rect = CGRectMake(100.0, 200.0, 50.0, 50.0);
CGContextAddRect(context, rect);
CGContextDrawPath(context, kCGPathFillStroke);
在我的应用程序中,我向UIView添加了一些UIButtons和UILabels。我想在UILabels周围画一个矩形。
我已经对代码的任何一方进行了NSLogged,并在两个日志之间获得了以下运行时输出错误。
<Error>: CGContextSetStrokeColor: invalid context 0x0
<Error>: CGContextAddRect: invalid context 0x0
<Error>: CGContextDrawPath: invalid context 0x0
等。
如何确保获得有效的上下文?我假设调用UIGraphicsGetCurrentContext();就足够了。
答案 0 :(得分:3)
Quartz(CoreGraphics)代码应该使用drawRect:
的{{1}}方法完成。
答案 1 :(得分:1)
除非您正在绘图,否则没有当前的图形上下文。
如果出现以下情况,将会有上下文:
UIGraphicsContextBeginImageContextWithOptions()
或类似内容创建了本地离屏情境。在这种情况下,您通常会将绘图提取到UIImage对象中以供日后使用。