gpt4 book ai didi

cocoa - 如何模仿Automator的工作流程 View ?

转载 作者:行者123 更新时间:2023-12-03 17:26:51 25 4
gpt4 key购买 nike

我开始开发我的第一个成熟的 Cocoa 应用程序,其中包含一个我希望其行为(和外观)类似于 Automator 的 AMWorkflowView 的 View 。

我想要实现的基本功能:

  • subview 的定位
  • 以展开/折叠状态显示 subview
  • 多项选择
  • 拖放

为了习惯 Cocoa,我从自定义 NSView 开始,它主要用作自定义 subview 的容器,并处理它们的定位和多重选择。 subview 也是 NSView 的子类,并且本身包含可变数量的 View ,例如按钮、标签和弹出菜单,因此可以具有不同的高度。这工作得很好,但在继续之前,我想确保一切都按照 MVC 模式整洁。

我怀疑 Cocoa 中已经有一个类可以促进 View 容器的实现,比如 NSCollectionViewIt seems that there is no (easy) way不过,在 NSCollectionView 中显示不同大小的 View 。我应该继续实现我的自定义 NSView (可能使用 NSArrayController 来支持选择和排序),还是有更好的方法?

非常感谢任何帮助

最佳答案

不幸的是,答案是你必须自己动手。 NSCollectionView 不允许使用可变大小的项目(这也排除了展开/折叠状态)。

对于有限数量的项目,您可以相当轻松地完成此任务(您只需要一个容器 View ,在要求布局时正确排列 subview ,然后您需要确保在情况发生变化时重新布局)。然而,对于许多 subview ,您需要注意尽可能高效。这可以从尽可能少地布局开始(例如,仅布局调整大小的 View “之后”的布局),然后变得像缓存原型(prototype) View 的视觉表示一样复杂,为除 View 之外的所有 View 绘制缓存的图像(快速!)正在编辑,并且仅使用/定位正在编辑的 View 的“真实” View 。

拖放的工作方式与往常一样,但以上都没有说明 NSCollectionView 为您提供的漂亮动画。 :-) 它速度快且动画精美,因为所有 subview 都是统一的(因此布局计算快速且简单)。一旦添加不规则尺寸,问题就会变得更加复杂。

底线:如果您需要可变大小的 View ,NSCollectionView 将无法工作,您需要自行编写或查找其他人的共享代码,但性能和精美的动画将无法实现简单。

关于cocoa - 如何模仿Automator的工作流程 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2579204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com