美文网首页iOSViewios技术iOS&Xcode奇技淫巧
IOS自定义CALayer,使用代理绘图

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

作者: 大玲_ | 来源:发表于2015-05-15 07:53 被阅读1448次

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

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

    相关文章

      网友评论

      本文标题:IOS自定义CALayer,使用代理绘图

      本文链接:https://www.haomeiwen.com/subject/zpdhqttx.html