NSViewにサブビューがあります。親ビューを再描画せずにサブビューを再描画できるようにしたい(drawRectを呼び出す)ことができます。それは可能ですか?NSView - 親ビューを再描画せずにサブビューを再描画する方法
私は、彼のサブビューで表示されている場合、親ビューのdrawRectも呼び出されます。
NSViewにサブビューがあります。親ビューを再描画せずにサブビューを再描画できるようにしたい(drawRectを呼び出す)ことができます。それは可能ですか?NSView - 親ビューを再描画せずにサブビューを再描画する方法
私は、彼のサブビューで表示されている場合、親ビューのdrawRectも呼び出されます。
不要な描画を減らすためにできることは、-isOpaque
を上書きしてYESを返します。
もちろん、サブビューが実際に不透明である場合にのみこれを行う必要があります。
サブビューが不透明であることは何を意味しますか? –
単純にopaqueプロパティをYESに設定することもできます。メソッドを上書きする必要はありません。不透明は「透明ではない」ことを意味する。 –
その結果はどうなりますか? –
NSResponderの回答に加えて、私はこう言っています。「あなたの再描画時に親ビューはあなたのビジネスのどれでもないと思われます。これはココアとの契約です。親ビューが独自のクラスの1つである場合は、関連する図面コードを掲示し、最適化の提案を求めます。 –
親ビューとサブビューの両方が自分のビューです。私は彼らのdrawRectメソッドを実装します。ほとんどの場合、親は同じままで、サブビューのみが変わります。その理由のために私はサブビューのdrawRectメソッドを –
と呼ぶだけです。あなたのサブビューにはあなたのスーパービューに何をすべきかを知らせないというのがポイントです。スーパービューは自分のものを処理し、システムがそれが必要であると指示したときに描画する必要があります。あなたのサブビューが確かに不透明である場合、回避する1つの方法は、NSResponderのアドバイスに従うことです。しかし、それらの間に透明レイヤーがある場合、スーパービューは少なくともそのリージョンを再描画する必要があります。 –