IOS自定义CALayer,使用代理绘图

今天使用自定义的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开发也可以使用。

感谢那些给我动力让我前进的人。
谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容