2

私は、サブビューを持つNSScrollViewたくさんのものを追加しようとしているを持っています。基本的には、スクロール ビューに含まれるサムネイルの長い行です。NSViewsNSImage

すべてがうまく機能します...スクロールビューに何千もの画像が表示されるまで(個別のサムネイル画像が作成されないため、画像は大きくなりますが、サムネイルサイズに縮小されます)。

スクロール ビューに現在表示されていない画像の割り当てを解除し、表示されたときにそれらをメモリにロードし直すのが最善の方法のようです。NSViewこのタイプの通知をサポートします ( iOSと同様) viewWillAppear:viewWillDisappear:

また、ARCモードでは、OSにイメージをアンロードするように明示的に指示するにはどうすればよいですか? NSImage*を nil に設定するとうまくいきますか?

4

1 に答える 1

0

NSView最善の方法は、画像サブビューを所有するカスタム サブクラスを作成することだと思います。

  • dirtyRectdrawRect:と交差する画像のみが描画されるようにメソッドをコーディングします。
  • カスタム ビューを のサブビューとして埋め込みますNSScrollView
  • 画像が追加/削除されると(これが可能な場合でも)、ビューのサイズを再計算して呼び出す[super setFrameSize:]必要があるため、スクロールビューはスクロールバーの長さなどを変更することを認識します.
  • setFrameSizeビューのサイズが変更されたときにレイアウトを変更する場合 (ビューにレイアウトの概念がある場合)、途中で再レイアウトしてサイズを変更するようにオーバーライドします。

質問では、直面している問題については述べていません。それらはメモリまたはパフォーマンス(または両方)ですか?サブイメージを継続的に解放して再割り当てしても、どちらの方法でも役立つとは思いません。

于 2012-04-11T09:53:57.677 に答える