两种方式
1 #import <QuartzCore/QuartzCore.h> 2 3 @interface NJLayer : CALayer 4 @end 5 6 7 #import "NJLayer.h" 8 9 @implementation NJLayer 10 11 // 重写该方法, 在该方法中给layer上绘制图形 12 // 注意CALayer中的drawInContext方法, 不会自动调用 13 // 只能自己通过setNeedDisplay方法调用 14 - (void)drawInContext:(CGContextRef)ctx 15 { 16 17 // 1.绘制图形 18 CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 100, 100)); 19 20 // [[UIColor redColor] set]; // 注意不能用UIKit框架中的类 21 22 CGContextSetRGBFillColor(ctx, 1, 0, 0, 1); 23 // 1.渲染图形 24 CGContextFillPath(ctx); 25 } 26 27 @end
1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 5 // 1.创建自定义Layer 6 CALayer *myLayer = [CALayer layer]; 7 myLayer.bounds = CGRectMake(0, 0, 100, 100); 8 myLayer.anchorPoint = CGPointZero; 9 myLayer.backgroundColor = [UIColor greenColor].CGColor; 10 11 myLayer.delegate = self; 12 13 // 1.1手动调用CALayer中的SETNEEDDISPLAY方法绘制图片 14 [myLayer setNeedsDisplay]; 15 16 // 2.将自定义Layer添加到控制器的view的layer上 17 [self.view.layer addSublayer:myLayer]; 18 } 19 20 // 通过代理自定义layer 21 - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 22 { 23 24 // 1.绘制图形 25 CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 50, 100)); 26 27 CGContextSetRGBFillColor(ctx, 1, 0, 0, 1); 28 // 1.渲染图形 29