ios中自定义图层的2种方法

1:自定义图层,在图层中画图

#import <QuartzCore/QuartzCore.h>

@interface MJLayer : CALayer

@end

#import "MJLayer.h"

@implementation MJLayer

#pragma mark 在这个方法中所画的动画都会显示到MJLayer上面
- (void)drawInContext:(CGContextRef)ctx {
// 在这里不能使用跟UIKit相关的东西
// [[UIColor redColor] set]; CGContextSetRGBFillColor(ctx, , , , ); CGContextAddEllipseInRect(ctx, CGRectMake(, , , ));
CGContextFillPath(ctx);
} @end ==================================================================

- (void)diylayer {
MJLayer *layer = [MJLayer layer];
layer.frame = CGRectMake(50, 50, 100, 100);
layer.backgroundColor = [UIColor blueColor].CGColor;
// 只有调用这个方法才会进行第一次的绘制
[layer setNeedsDisplay];
[self.view.layer addSublayer:layer];
}


画图使用代理方式

- (void)diylayer2 {
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(, , , );
layer.backgroundColor = [UIColor blueColor].CGColor;
// 设置代理,让代理帮图层画东西
layer.delegate = self;
// 只有调用这个方法才会进行第一次的绘制
[layer setNeedsDisplay];
[self.view.layer addSublayer:layer];
} #pragma mark 图层的代码方法,在这里帮图层画东西
// 方法定义在QuartzCore框架中CALayer.h的@interface NSObject (CALayerDelegate)分类
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
CGContextSetRGBFillColor(ctx, , , , ); CGContextAddEllipseInRect(ctx, CGRectMake(, , , ));
CGContextFillPath(ctx);
}
上一篇:《深入理解OSGi:Equinox原理、应用与最佳实践》一3.3 启动级别


下一篇:选型宝访谈:覆盖5.8亿月活用户的易观,如何赋予企业BAT级的全网用户行为分析能力?