drawRect メソッドで描画する UIView があります。drawRect で描画するもののサブセットを描画する UIView CALayer (self.layer) の上に CALayer をオーバーレイしたいと思います。基本的に、drawRect でたくさんの円を描きますが、オーバーレイでいくつかの円をハイライトしたいと思います。UIView のプロパティであるモデル オブジェクトから円の座標を取得します。
私の最初の試みは、サブレイヤーs
を UIView レイヤーに追加し、そのデリゲートを UIView に設定し、setNeedsDisplay
必要に応じてそのメソッド を呼び出すことでしたdrawLayer:InContext
が、両方のレイヤー (s
および self.layer) によって呼び出されます。これは機能しません:
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
if (layer == s ) {
// draw stuffs for s
}
else if (layer==self.layer) {
// do nothing
}
}
黒の UIView になります。s
データモデルにアクセスできる場所と、描画に役立つその他の変数 (線の幅..)から描画したいと思います。の描画をs
別のオブジェクトに移動することで問題を解決しましたが、これにより、このオブジェクトにモデルのポインターも設定し、他のパラメーターもコピーする必要があります。
だから私の質問は: drawRect を使用してコンテンツを描画する UIView で、デリゲートが同じ UIView であるサブレイヤーを追加する方法は?