CGContextFillRect不起作用

时间:2012-10-01 02:08:20

标签: objective-c ios quartz-graphics

此代码似乎无效。建立成功,没有错误。屏幕上没有绘制矩形。

- (void)viewDidLoad
{

    [super viewDidLoad];

    UIColor *reliantMagenta             = [UIColor colorWithRed:208.0f / 255.0f green:27.0f / 255.0f blue:124.0f / 255.0f alpha:1];

    CALayer *reliantCanvasLayer         = [CALayer layer];

    reliantCanvasLayer.frame            = CGRectMake(0, 0, 640, 960);

    [[[self view] layer] addSublayer:reliantCanvasLayer];

    CGContextRef ctx                    = UIGraphicsGetCurrentContext();
    CGRect leftRect                     = CGRectMake(0, 0, 200, 300);

    CGContextSaveGState(ctx);
    CGContextSetFillColorWithColor(ctx, reliantMagenta.CGColor);

    CGContextFillRect(ctx, leftRect);
    CGContextRestoreGState(ctx);

}

我只是在学习Quartz并且真正地用它来捣乱。如果你想解释UIViews,CALayers,CGLayers和上下文之间的关系,这也是一个很大的帮助,但不是必需的,只是无法理解正在发生的事情。

1 个答案:

答案 0 :(得分:4)

如果你刚开始使用Quartz,那么你应该从Quartz 2D Programming Guide开始,它将遍历所有这些。您的关键错误是viewDidLoad中没有可用的上下文。这种绘图通常在drawRect:中完成。此时,您对UIGraphicsGetCurrentContext()的调用会返回NULL

阅读完编程指南后,您可能会有更多问题,但这是您应该开始了解自定义绘图的地方。