2011-10-27 4 views
0

Cocoaで使用されているようにセルをリサイクルする以外のテーブルやグリッドなどのスクロールするコンポーネントでメモリを管理する方法は、このようにビューをレイアウトするために必要な一連の計算とデータソース/デリゲートコールは機能しますが、複雑なアニメーションをセルと調整し、スクロールビューはエラーを起こしやすくなります。データを再ロードするときにコールのシーケンスに注意を払う必要がありますオフセットや、アニメーションのターゲットフレームに影響するレイアウトの他のメカニズムにスクロールします。私は、スクロールビューにコンテンツを提供する宣言的なアプローチを探しています。長い垂直レイアウトの画像でDOMをロードすると、ブラウザーで行われるようなスマートな方法で管理できます。scollingコンポーネントのメモリを管理するには?

+0

あなたはNSScrollViewにコンテンツを提供しません。NSScrollViewはそれを要求せず、表示をスクロールするだけです。どのデータビューを使用していますか(NSTableView、NSOutlineView、MSMatrixなど)?データビューで使用するセルの数はいくつですか?アニメーションの問題は何ですか? – hamstergene

+0

私は、Twitterのオープンソースのlibの 'UIScrollView'のようなコンポーネントである' TUIScrollView'の上にカスタムレイアウトを書いています。コアアニメーションの変更をデバッグするのが難しいため、コンポーネントにコンテンツを提供するデータソース/デリゲートスタイルが嫌いです。典型的なNSTableViewのようなインプリメンテーションでは、テーブルには、異なる時間に呼び出されるレイアウトロジックを実行する複数のメソッドがあります。完全にコーディングされていないと、予期せずにアニメーションが破損することがありますより宣言的なスタイルが必要なので、他のサイズを変更するときに行をアニメーション化するなど、すべてのアニメーションをまとめて時刻を合わせることができます。 –

答えて

0

自分のビューのレイアウトだけを行い、アニメーションをプログラムするのが難しいNSTableViewDataSourceなどのような綿密なプロトコルを適用しない独自のカスタムレイアウトクラスを作成する方が簡単です。私は自分のビューがいつどこにあるのか、各ビューの完全な階層を正確に知りたいのですが、モデルを自分のビューと同期させたくないので、ビュー自体にデータを保存します。私の心の中では、スクリーン上のオブジェクトは、私がプログラマーとして編成したいと思う唯一のオブジェクトです。私はゲームプログラマーのようなものを直接宣言的にコントロールしたいと思っています。スクロールビューを直接サブクラス化し、通常のlayoutSubviewsのココアメソッド以外の非常に単純なレイアウトルールに従って、私は驚きのレイアウトを避けるため、アニメーションをより良くコントロールし、より複雑で流動的なアニメーションを作成することができました。これが誰かに同じことを促すことを願っています。