我开始开发我的第一个完整的Cocoa应用程序,其中包含一个我希望表现(和看起来)类似于Automator的AMWorkflowView
的视图。
我想要实现的基本功能:
为了习惯Cocoa,我开始使用自定义NSView
,它主要用作自定义子视图的容器,并处理它们的定位和多项选择。
子视图也是NSView
的子类,并且包含可变数量的视图本身,如按钮,标签和弹出菜单,因此可以具有不同的高度。
这非常有效,但在继续之前,我想确保根据MVC模式让一切都干净整洁。
我怀疑Cocoa中已经有一个类可以促进视图容器的实现,例如NSCollectionView
。
It seems that there is no (easy) way {{3}}可以在NSCollectionView
中显示不同大小的视图。我应该继续实施自定义NSView
(可能使用NSArrayController
进行选择和排序支持),还是有更好的方法可以使用?
非常感谢任何帮助
答案 0 :(得分:0)
不幸的是答案是你必须自己动手。 NSCollectionView
不允许使用可变大小的项目(这也会排除展开/折叠状态)。
对于有限数量的项目,您可以相当轻松地完成此任务(您只需要一个容器视图,在要求布局时正确排列子视图,然后您需要确保在事情发生变化时重新布局)。但是,对于许多子视图,您需要注意尽可能高效。这可以从尽可能少的布局开始(例如,仅在调整大小的视图之后),并且像缓存原型视图的可视化表示一样复杂,为除了视图之外的所有视图绘制缓存图像(快!)正在编辑,并且只对正在编辑的视图使用/定位“真实”视图。
拖放的工作方式与以往一样,但上面没有适用于漂亮动画NSCollectionView
的帐户。 :-)它快速而精美地动画精确因为所有子视图都是统一的(所以布局计算快速而简单)。添加不规则尺寸后,问题会变得更加复杂。
底线:如果您需要大小不一的视图,NSCollectionView
将无效,您需要自己动手或找到其他人的共享代码,但性能和漂亮的动画并不容易。< / p>