我正在学习可可,我正在创建一个应用程序,需要在下面的屏幕截图中使用类似的布局(这似乎是一种非常常见的布局方法)。
这种类型的Cocoa应用程序将采用何种控件/架构?
我还处于学习/阅读的早期阶段,到目前为止我只知道基于文档的应用程序,但这种类型的布局似乎看起来不像基于文档的应用程序,因为它并不真正需要多个窗户打开了。
如果它不是文档,是否有其他设计图案或布局的名称?
从我现在到目前为止,我将其描述为:
如果有人能够详细介绍像这样的应用程序的高级设计,例如:面板数,使用的视图,控件,控制器等,我将不胜感激?
另外,还有几个快速的子问题:
左窗格中有哪些菜单控件,然后展开和显示子元素?
当显示首选项窗口时,调用的效果是什么使它以动画方式显示(如地址簿所示),它是一个小窗口,以动画方式扩展到正确的大小。
答案 0 :(得分:2)
你说得对,这可能不是基于文档的应用程序,因为它们默认在新窗口中打开文档。
要像这样布局窗口,会有一个包含3个窗格的NSSplitView
。每个窗格都可以选择包含从NSViewController
加载的视图,这可以帮助保持代码模块化,但这取决于您尝试做的事情,如果这是合适的。
左侧窗格是NSOutlineView
(一个NSTableView
子类),中间是NSTableView
,但我不确定如何创建右侧视图(许多自定义NSView
和其他内容,可能是WebView
)
该弹出窗口选项窗口可能是NSPopover
(其中包含NSViewController
),但这只与OS X 10.7兼容,因此也可能完全自定义以实现向后兼容性和更容易的自定义。
另请注意,这是一个相当复杂的示例,您可能会提供许多自定义控件,这些控件可能比它们看起来更难以创建:
要使左侧的大纲视图具有未读计数和图标(来自内存)未内置到AppKit中,所以自定义创建。要做到这一点,你需要对NSCell
vs NSView
有充分的理解,理想情况下还要了解Core Animation层支持的视图,以及用于不同方面的内容。
窗口的标题栏高于平时。这意味着如果不是从头开始创建整个窗口,开发人员可能不得不做一些疯狂的事情来实现它。
这只是一个开始。那里有许多非常好的设计,这是定制的,从头开始。
设计Mac应用程序有时很难。 AppKit非常古老(从NEXT时代开始),并且有很多遗留问题。另一方面,iOS上的UIKit相当不错 - 苹果公司清楚地从他们的过去中学到了很多东西。
我几乎没有触及所有这些背后的控制器和模型。有很多不同的方法可以做到这一点。对于持久性,您可以使用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
您设计模型的方式&控制器真的取决于具体问题。可可真的迫使你坚持使用MVC - 如果你不这样做,事情肯定会变得混乱。
我希望一切都有帮助!我真的只是在学习自己。
答案 1 :(得分:0)
Apple将此类应用程序设计称为单窗口,库 - (或“ shoebox ”)样式,并在文档中为此设计选择提供了许多建议。