iPhoneの開発では、コンテキストをレイヤーで描きたいと思います。次に、質問は次のとおりです。
drawLayer:inContext:に渡されるコンテキストは正確には何ですか?レイヤーのコンテンツのコンテキストですか、それともUIviewのコンテキストですか?
これがUIViewのコンテキストである場合、それはどのUIViewですか?
前もって感謝します。
渡されるコンテキストは、そのデリゲートメソッドによって返されるCALayerに属します。通常、これは表示コンテキストですが、レイヤーを使用して手動で描画する場合は、画像またはPDFコンテキストにすることもできます-renderInContext:
。
CALayersは、それ自体で存在することも、UIViewのバッキングとして使用することもできます。すべてのUIViewの背後には、そのビューのコンテンツの実際の表示を処理するレイヤーがあります。ビューに描画すると、実際にはそのレイヤーに描画されます。同様に、UIViewをサポートするCALayerに描画すると、ビューに描画されているように見えます。
すでに述べたように、個別のエンティティとして存在するCALayerを作成し、それらを表示用のサブレイヤーとして既存のレイヤーに追加できます。ある時点で、これらのレイヤーをiPhoneの画面に表示するには、バッキングレイヤー内にこれらのサブレイヤーをすべてホストするUIViewが必要になります。
UIViewクラスリファレンスによると:
ビューはレイヤーのデリゲートであるため、ビューを別のCALayerオブジェクトのデリゲートとして設定しないでください。さらに、このレイヤーのデリゲートを変更しないでください。
これは、UIViewのレイヤーの場合、ほとんどすべての場合にUIView内でデリゲートメソッドを処理するため、そのメソッドに渡されるレイヤーがビューのレイヤーになることを意味します。サブレイヤーは特定のビューにアタッチされていないため、デリゲートとして何でも持つことができます。
ここにいくつかの情報があります:レイヤーコンテンツの提供
画像からレイヤーのコンテンツをロードするのではなく描画する必要がある場合は、drawLayer:inContext:デリゲートメソッドを実装します。デリゲートには、コンテンツが必要なレイヤーと、コンテンツを描画するためのCGContextRefが渡されます。
したがって、通常はデリゲートオブジェクトのコンテキストです。UIVIewの場合、ビュー自体がデリゲートです。