一. 創建圖層繼承于CALayer,并在子類實現drawInContext方法
@interface CTLayer : CALayer@end@implementation CTLayer-(void)drawInContext:(CGContextRef)ctx{
//畫一個圓 CGContextSetRGBFillColor(ctx, 0, 0, 1, 1); CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 100, 100)); CGContextFillPath(ctx);}@end
在viewcontroller加載視圖時,
CTLayer *layer = [CTLayer layer]; layer.bounds = CGRectMake(0, 0, 300, 300); layer.anchorPoint = CGPointMake(0,0); [layer setNeedsDisplay];//顯示圖層 [self.view.layer addSublayer:layer];
二. 使用代理方式創建
CTLayer *layer = [CTLayer layer]; layer.bounds = CGRectMake(0, 0, 300, 300); layer.anchorPoint = CGPointMake(0,0); layer.delegate = self; //指定代理,該代理可為任意類型 [layer setNeedsDisplay];//顯示layer [self.view.layer addSublayer:layer];
實現代理方法
#PRagma mark 代理方法-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{ CGContextSetRGBFillColor(ctx, 0, 0, 1, 1); CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 100, 100)); CGContextFillPath(ctx);}
新聞熱點
疑難解答