- (void)viewDidLoad {
[superviewDidLoad];
//1.创建自定义的layer
CALayer *layer=[CALayerlayer];
//2.设置layer的属性
layer.backgroundColor=[UIColorbrownColor].CGColor;
layer.bounds=CGRectMake(0,0,200,150);
layer.anchorPoint=CGPointZero;
layer.position=CGPointMake(100,100);
layer.cornerRadius=20;
layer.shadowColor=[UIColorblackColor].CGColor;
layer.shadowOffset=CGSizeMake(10,20);
layer.shadowOpacity=0.6;
//设置代理
layer.delegate=self;(不用遵守任何协议,因为:
@property(nullable,weak) id delegate;)
[layer setNeedsDisplay];
//3.添加layer
[self.view.layeraddSublayer:layer];
}
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
UIGraphicsPushContext(ctx);
CGContextMoveToPoint (ctx,75,10);
CGContextAddLineToPoint (ctx,10,150);
CGContextAddLineToPoint (ctx,160,150);
// Closing the path connects the current point to the start of the current path.
CGContextClosePath(ctx);
// And stroke the path
[[UIColorblackColor]setStroke];
//CGContextStrokePath(context);
[[UIColorredColor]setFill];
CGContextDrawPath(ctx,kCGPathFillStroke);
//kCGPathFillStroke,kCGPathFill,kCGPathStroke
UIGraphicsPopContext();
}
注意:
UIGraphicsPushContext(cox);
UIGraphicsPopContext();这两句代码不写的话控制台会打出警告:
Jul 6 15:47:04 TextBeiSaiEr[8061] <Error>: CGContextSetStrokeColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Jul 6 15:47:04 TextBeiSaiEr[8061] <Error>: CGContextSetFillColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.