iOSViewios技术iOS&Xcode奇技淫巧

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

2015-05-15  本文已影响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开发也可以使用。

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

上一篇下一篇

猜你喜欢

热点阅读