0

我在研究 CALayers 时看到了这个解决方案。我正在寻找一种在具有多个子层的 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 提供的代码。

4

1 回答 1

2

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

所以: - 子类化一个 UIView(或它的子类,如 UIImageView 等) - 实现 layerClass 方法,并返回 [MyCALayer 类];

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

于 2012-07-17T11:26:57.790 回答