今天使用自定义的CALayer 运用代理的方式绘图,很简单。但是要有一些Quartz2D的知识(有时间总结总结)。
首先 创建一个自定义的CALayer,并添加到视图的CALayer中
//实例化子图层
CALayer *myLayer = [CALayer layer];
//设置大小位置
[myLayer setBounds:CGRectMake(0, 0, 200, 200)];
[myLayer setBackgroundColor:[UIColor redColor].CGColor];
[myLayer setPosition:CGPointMake(100, 100)];
[self.view.layer addSublayer:myLayer];
[myLayer setDelegate:self];
//如果要重绘CALayer必须要调用setNeedDisplay方法
[myLayer setNeedsDisplay];
NSLog(@"%@",myLayer);
注意必须设置setNeedsDisplay,否则代理不会执行,千万注意。
实现代理方法
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ct.
下面就是在自定义的CALayer中绘制,直接看代码。
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
NSLog(@"%@",layer);
//在core animation 中,不能使用ui的方法,UI的方法仅适用于ios开发平台。
//画一个蓝色矩形
// [[UIColor blackColor]set];
CGRect rect = CGRectMake(50, 50, 100, 100);
CGContextSetRGBFillColor(ctx, 0.0, 0.0, 1.0, 1.0);
CGContextSetRGBStrokeColor(ctx, 0.0, 1.0, 1.0, 1.0);
CGContextAddRect(ctx, rect);
CGContextDrawPath(ctx, kCGPathFillStroke);
// UIRectFill(rect);
}
注意:在core animation 中,不能使用ui的方法,UI的方法仅适用于ios开发平台。
效果:
1431647350.gif红色为CALayer。看色为绘制的矩形(使用Quartz2D)。
总结:
1.记得使用setNeedsDisplay 才会调用代理方法
2.在Core Animation 中不要使用带ui的方法。UI的方法只是在IOS开发平台。Core Amimation是跨平台的。mac开发也可以使用。
感谢那些给我动力让我前进的人。
谢谢。
网友评论