2

我正在学习可可,我正在创建一个需要与下面的屏幕截图类似的布局的应用程序(这似乎是一种非常常见的布局方法)。

这种类型的 Cocoa 应用程序是什么类型的控件/架构?

我仍处于学习/阅读的早期阶段,到目前为止我只知道基于文档的应用程序,但是这种类型的布局看起来不像基于文档的应用程序,因为它实际上并不需要打开多个窗口.

如果不是文档,是否有其他设计模式或布局的名称?

从我现在到目前为止,我会这样描述:

如果有人能给我详细介绍这样的应用程序的高级设计,我将不胜感激,例如:面板的数量、使用的视图、控件、控制器等?

另外,一些快速的子问题:

  1. 左窗格中的菜单控件是什么类型的,然后展开并显示子元素?

  2. 当显示首选项窗口时,这种效果叫什么,使它以动画方式显示(就像地址簿一样),它是一个小窗口,以动画方式扩展到正确的大小。

在此处输入图像描述

4

2 回答 2

3

没错,这可能不是基于文档的应用程序,因为它们默认在新窗口中打开文档。

要像这样布局窗口,会有一个NSSplitView包含 3 个窗格的窗口。每个窗格都可以选择包含从 加载的视图NSViewController,这可以帮助保持代码模块化,但这取决于您尝试执行的操作是否合适。

左窗格将是一个NSOutlineViewNSTableView子类),中间是一个NSTableView,但我不确定如何创建右侧视图(可能有很多 customNSView和其他东西WebView

该弹出选项窗口可能是一个NSPopover(其中包含一个NSViewController),但它仅与 OS X 10.7 兼容,因此也可以完全自定义以实现向后兼容性和更轻松的定制。

另请注意,这是您给出的一个相当复杂的示例,其中包含许多可能比看起来更难创建的自定义控件:

  • 为了让左侧的大纲视图具有未读计数和图标(从内存中),AppKit 中没有内置,所以都是自定义创建的。要做这样的事情,你需要对NSCellvs有一个扎实的理解NSView,理想情况下还需要了解 Core Animation 层支持的视图,以及在不同方面使用什么。

  • 该窗口的标题栏比平常高。这意味着开发人员可能不得不做一些疯狂的事情来让它工作,如果不是从头开始创建整个窗口。

这只是开始。那里有很多非常好的设计,都是定制的,从头开始。

有时设计 Mac 应用程序可能很困难。AppKit 已经很老了(从 NEXT 时代回来),并且有很多遗留问题。另一方面,iOS 上的 UIKit 相当不错——Apple 显然从他们的过去中吸取了教训,并让事情变得更好。


我几乎没有触及这一切背后的控制器和模型。有很多不同的方法可以做到这一点。对于持久性,您可以使用 CoreData、sqlite、NSKeyedArchived等等。Brent Simmons(另一位 RSS 阅读器 NetNewsWire 的前开发人员)为此写了一些有趣的博客文章: http: //inessential.com/2010/02/26/on_switching_away_from_core_data http://inessential.com/2011/09/22/core_data_revisited

您设计模型和控制器的方式实际上取决于具体问题。Cocoa 确实迫使你坚持使用 MVC——如果你不这样做,事情肯定会变得一团糟。


希望对大家有帮助!我真的也只是在学习自己。

于 2012-07-11T02:35:01.730 回答
0

Apple 将这种类型的应用程序设计称为单窗口、库(或“<strong>shoebox”)风格,并在文档中为这种设计选择提供了许多建议。

(参见Mac App 编程指南

于 2012-11-16T15:51:10.353 回答