4

iPhoneの開発では、コンテキストをレイヤーで描きたいと思います。次に、質問は次のとおりです。

drawLayer:inContext:に渡されるコンテキストは正確には何ですか?レイヤーのコンテンツのコンテキストですか、それともUIviewのコンテキストですか?

これがUIViewのコンテキストである場合、それはどのUIViewですか?

前もって感謝します。

4

2 に答える 2

3

渡されるコンテキストは、そのデリゲートメソッドによって返されるCALayerに属します。通常、これは表示コンテキストですが、レイヤーを使用して手動で描画する場合は、画像またはPDFコンテキストにすることもできます-renderInContext:

CALayersは、それ自体で存在することも、UIViewのバッキングとして使用することもできます。すべてのUIViewの背後には、そのビューのコンテンツの実際の表示を処理するレイヤーがあります。ビューに描画すると、実際にはそのレイヤーに描画されます。同様に、UIViewをサポートするCALayerに描画すると、ビューに描画されているように見えます。

すでに述べたように、個別のエンティティとして存在するCALayerを作成し、それらを表示用のサブレイヤーとして既存のレイヤーに追加できます。ある時点で、これらのレイヤーをiPhoneの画面に表示するには、バッキングレイヤー内にこれらのサブレイヤーをすべてホストするUIViewが必要になります。

UIViewクラスリファレンスによると:

ビューはレイヤーのデリゲートであるため、ビューを別のCALayerオブジェクトのデリゲートとして設定しないでください。さらに、このレイヤーのデリゲートを変更しないでください。

これは、UIViewのレイヤーの場合、ほとんどすべての場合にUIView内でデリゲートメソッドを処理するため、そのメソッドに渡されるレイヤーがビューのレイヤーになることを意味します。サブレイヤーは特定のビューにアタッチされていないため、デリゲートとして何でも持つことができます。

于 2010-02-26T16:07:15.793 に答える
1

ここにいくつかの情報があります:レイヤーコンテンツの提供

画像からレイヤーのコンテンツをロードするのではなく描画する必要がある場合は、drawLayer:inContext:デリゲートメソッドを実装します。デリゲートには、コンテンツが必要なレイヤーと、コンテンツを描画するためのCGContextRefが渡されます。

したがって、通常はデリゲートオブジェクトのコンテキストです。UIVIewの場合、ビュー自体がデリゲートです。

于 2010-02-26T10:50:49.787 に答える