2010-04-05 34 views
1

我開始開發我的第一個完整的Cocoa應用程序,其中包含一個我希望類似於Automator的AMWorkflowView的行爲(和看起來)的視圖。如何模仿Automator的工作流程視圖?

的基本特徵,我想實現:

  • 子視圖的定位
  • 顯示在展開/摺疊狀態的子視圖
  • 多選
  • 拖放的

爲了習慣Cocoa,我開始定製NSView,主要用於交流ontainer用於定製子視圖並處理它們的定位和多選。 子視圖也是NSView的子類,它們本身包含可變數量的視圖,如按鈕,標籤和彈出菜單,因此可以有不同的高度。 這工作得很好,但在繼續之前,我想確保根據MVC模式將所有內容整齊整齊。

我懷疑在Cocoa中已經有了一個類來幫助實現一個視圖容器,比如可能是NSCollectionViewIt seems that there is no (easy) way雖然在NSCollectionView中顯示不同大小的視圖。我是否應該繼續執行自定義NSView(可能使用NSArrayController進行選擇和排序支持),還是有更好的方法可行?

任何幫助深表感謝

回答

0

很不幸,答案是你必須推出自己的。 NSCollectionView不允許可變大小的項目(這也排除了展開/摺疊狀態)。

對於數量有限的項目,您可以非常輕鬆地完成此操作(您只需要一個容器視圖,當要求佈局時正確排列子視圖,然後在事情發生變化時需要確保重新佈局)。然而,對於許多子視圖,您需要注意儘可能高效。這可以從儘可能少的佈局開始(例如,只有那些在「調整大小後的視圖之後」)並且像緩存原型視圖的視覺表示一樣複雜,爲除視圖之外的所有視圖繪製緩存圖像(快!)正在編輯,並且僅對正在編輯的視圖使用/定位「真實」視圖。

拖放的工作方式與以往一樣,但以上都不包含漂亮的動畫NSCollectionView。 :-)它快速而精美 - 精確地動畫,因爲所有的子視圖都是統一的(所以佈局計算是快速和簡單的)。一旦添加不規則尺寸,問題就會變得更加複雜。底線:如果您需要不定尺寸的視圖,NSCollectionView將無法​​正常工作,您需要自行推出或查找其他人的共享代碼,但是性能和美觀的動畫並非易事。

+0

感謝您的回答。我已經懷疑這一點。我將嘗試重現'NSCollectionView'和它的'NSCollectionViewItems'的體系結構。 – andyfeind 2010-04-07 14:27:13

相關問題