1

半静的コンテンツを含む 2 つのサブレイヤーを持つ CALayer があります。最上位レイヤーをレンダリングしている間、setNeedsDisplay で更新をスケジュールせずにサブレイヤーをレンダリングしたいと思うことがあります。

1 つのオプションはデリゲート クラスを作成して実装することdrawLayer:inContext:ですが、おそらく renderInContext を使用してサブレイヤーをすぐにレンダリングしたかったのですが、親レイヤーにレンダリングしたくありません。

サブレイヤーのコンテキストを切り替えたり取得したりして、すぐに描画できる方法はありますか?

4

1 に答える 1

2

「ルート」オブジェクトの状態を保持しながら描画を行うメカニズムは、ルート オブジェクトをレンダリングを行うレイヤーのデリゲートとして設定することです。次に、drawLayer:inContext: をデリゲートに実装する必要があります。

setNeedsDisplay で要求しない限り、レイヤーの再描画は必要ないことに注意してください。したがって、あなたの場合、状態をループして、[layer setNeedsDisplay]それを必要とするレイヤーのみを呼び出し、それらのレイヤーのみが drawLayer:inContext: を呼び出します。

于 2013-04-16T13:01:27.820 に答える