石英,矩形不显示

时间:2012-02-15 17:01:58

标签: ios quartz-2d

我在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();就足够了。

2 个答案:

答案 0 :(得分:3)

Quartz(CoreGraphics)代码应该使用drawRect:的{​​{1}}方法完成。

答案 1 :(得分:1)

除非您正在绘图,否则没有当前的图形上下文。

如果出现以下情况,将会有上下文:

  • 您使用drawRect方法
  • 您已使用UIGraphicsContextBeginImageContextWithOptions()或类似内容创建了本地离屏情境。在这种情况下,您通常会将绘图提取到UIImage对象中以供日后使用。