我想实现一个有两层的视图。然后我想在按下一些按钮时分别在这些层上绘制一些图形。
我已经实现了委托方法:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context
但问题是,这个委托只使用[myviewclass setNeedsDisplay]
方法(而不是[mylayer setNeedsDisplay]
)激发,然后drawLayer
总是被视图的根层调用。
我希望它被调用为mylayer
和精确的context
,这样我就可以使用它的上下文在特定的图层上绘制。
请帮助如何实现这一点。
必须设置层的委托并在其中实现委托方法drawLayer:inContext:
。否则,层无法确定必须在哪个对象中调用该方法。
此外,层的委托不能是UIView
,因此必须使用其他内容作为委托。
例如,可以将视图控制器用作图层的代理。首先,在视图控制器中实现方法drawLayer:inContext:
。然后,将视图控制器设置为层的代理。
- (void)viewDidLoad
{
[super viewDidLoad];
// ...
self.view.layer1.delegate = self;
self.view.layer2.delegate = self;
}
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
if (layer == self.view.layer1) {
// ...
} else if (layer == self.view.layer2) {
// ..
}
}