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:
、ビューのルート レイヤーで使用されている が 4 回実装されています。これは、カスタム レイヤがカスタム メソッドの代わりにこのメソッドを実装することを意味します。誰かが私に理由を説明できますか?
注:リンクで参照している解決策は、Dave Lee によって提供されたコードです。