此代码似乎无效。建立成功,没有错误。屏幕上没有绘制矩形。
- (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和上下文之间的关系,这也是一个很大的帮助,但不是必需的,只是无法理解正在发生的事情。
答案 0 :(得分:4)
如果你刚开始使用Quartz,那么你应该从Quartz 2D Programming Guide开始,它将遍历所有这些。您的关键错误是viewDidLoad
中没有可用的上下文。这种绘图通常在drawRect:
中完成。此时,您对UIGraphicsGetCurrentContext()
的调用会返回NULL
。
阅读完编程指南后,您可能会有更多问题,但这是您应该开始了解自定义绘图的地方。