1

Automator のAMWorkflowView.

私が達成したい基本的な機能:

  • サブビューの配置
  • 展開/折りたたみ状態でのサブビューの表示
  • 複数選択
  • ドラッグアンドドロップ

Cocoa に慣れるために、NSView主にカスタム サブビューのコンテナーとして機能し、それらの配置と複数選択を処理するカスタムから始めました。サブビューも のサブクラスでありNSView、ボタン、ラベル、ポップアップ メニューなど、さまざまな量のビュー自体が含まれているため、異なる高さを持つことができます。これは非常にうまく機能しましたが、先に進む前に、MVC パターンに従ってすべてが整頓されていることを確認したいと思います。

ビューコンテナの実装を容易にするクラスがすでにCocoaにあるのではないかと思いNSCollectionViewます。 ただし、異なるサイズのビューを に表示する(簡単な) 方法はないようNSCollectionViewです。カスタムの実装を続行する必要がありますかNSView(おそらく、NSArrayController選択と並べ替えのサポートに を使用します)、またはより良い方法はありますか?

どんな助けでも大歓迎です

4

1 に答える 1

0

残念ながら、答えはあなたが自分で転がさなければならないということです。NSCollectionView可変サイズのアイテムは許可されません(展開/折りたたみ状態も除外されます)。

限られた数のアイテムの場合、これはかなり簡単に実行できます(レイアウトを求められたときにサブビューを適切に配置するコンテナビューが必要なだけで、状況が変わったときに必ず再レイアウトする必要があります)。ただし、多くのサブビューでは、可能な限り効率的になるように注意する必要があります。これは、レイアウトをできるだけ少なくすることから始めて(たとえば、サイズ変更されたビューの「後」のもののみ)、プロトタイプビューの視覚的表現をキャッシュし、ビュー以外のすべてのキャッシュされた画像を(高速に!)描画するのと同じくらい複雑になります。編集中であり、編集中のビューに対して「実際の」ビューのみを使用/配置します。

ドラッグアンドドロップはいつもと同じように機能しますが、上記のどれもきれいなアニメーションNSCollectionViewを説明していません。:-)すべてのサブビューが均一であるため、高速で美しくアニメーション化されます(したがって、レイアウト計算は高速でシンプルです)不規則なサイズを追加すると、問題は非常に複雑になります。

結論:さまざまなサイズのビューが必要な場合NSCollectionViewは機能せず、自分でロールするか、他の人の共有コードを見つける必要がありますが、パフォーマンスと美しいアニメーションは簡単ではありません。

于 2010-04-06T14:50:40.580 に答える