CALayer没有实现自定义drawLayer:inContext:方法

时间:2012-07-17 11:02:44

标签: ios cocoa-touch core-animation calayer

我在研究CALayers时看到了solution。我正在寻找一种在具有多个子层的UIView中实现自定义绘图的方法。我将这个子图层命名为:

layer1.name = @"Back";
layer2.name = @"Middle";
layer3.name = @"Front";

我创建了由这些图层实现的自定义方法

-(void)drawBackLayer:(CALayer *)layer inContext:(CGContextRef)ctx
-(void)drawMiddleLayer:(CALayer *)layer inContext:(CGContextRef)ctx
-(void)drawFrontLayer:(CALayer *)layer inContext:(CGContextRef)ctx

问题是没有实现这些方法,而是由视图的根层使用的drawLayer:inContext:实现了四次。这意味着自定义图层实现此方法而不是自定义方法。任何人都可以向我解释原因吗?

注意:我在链接中提到的解决方案是Dave Lee提供的代码。

1 个答案:

答案 0 :(得分:2)

UIView使用的图层必须是实现这些消息的自定义CALayer。使UIView子类使用特定图层的方法是通过类方法“+(Class)layerClass”。

所以: - 子类UIView(或其子类,如UIImageView等) - 实现layerClass方法,并返回[MyCALayer class];

现在该视图将使用您的CALayer子类。