Mac的窗口对接建议

时间:2010-02-13 01:00:50

标签: cocoa macos docking

我在编写工具时来自Windows编程背景,但过去一年中一直使用Carbon和Cocoa进行编程。我承认,我已经向Mac介绍了自己,从UI编程中隐藏起来。我一直在视图中使用我的OpenGL代码,然后像往常一样使用与平台无关的OpenGL C ++代码保持在我的舒适区域。

但是,现在我想开始将一个更复杂的应用程序移植到Mac OS。

通常我使用标准的Visual Studio可停靠MDI方法,这种方法非常出色,但非常像Windows。从主要使用Mac开始一段时间,我不倾向于看到用于Mac UI的这种方法。不幸的是,即使Xcode也不支持拖放/停靠视图的想法。我看到有拆分面板的停靠视图,但这就是它。

我见过的最接近Visual Studio方法的是Photoshop CS4,这非常好。

那么对此有何普遍共识?有没有更像Mac的方式来实现我没见过的同样的事情?如果没有,我很高兴自己在Cocoa中编写一个窗口管理器,这样我就可以深入了解一个看起来很棒的API。

注意,我不想使用QT或任何其他跨平台库。重点是我想让Mac应用程序看起来像Mac应用程序,让Windows应用程序看起来像Windows应用程序。我总是发现跨平台库往往会失去这种效果,当我看到一个原生的Mac UI,花哨的Cocoa过渡和动画时,我总是微笑。这对我学习可可也是一个很好的借口。

话虽如此,如果有一个开源Cocoa库来做这件事,我很想知道它!我很想看看其他人是如何实现这一目标的,并且有助于平滑可可学习曲线。

干杯,

沙恩

更新:我忘了提到一个关键点。我支持插件,它可以有自己的UI来显示各种插件特定信息。我不知道将加载哪些插件,如果我不支持对接,我不知道他们的UI将在哪里生活。我很想听听别人对此的看法,具体来说:如果UI无法改变,我如何支持插件视图架构?我在哪里放置插件视图?

4 个答案:

答案 0 :(得分:10)

来自Windows背景,你觉得需要有对接窗口,但这对应用程序来说真的很重要吗? Apple的理念(在我看来)是设计师比用户更了解事物的外观和工作方式。例如,iTunes是一个非常复杂的应用程序,但它不会让你改变UI,改变皮肤等,因为Apple希望保持它的一致性。它们提供完整视图,迷你播放器和一些不同的查看选项,但它们不允许您将源列表拉到单独的窗口中,或将其停靠在其他位置。他们认为它应该在左边,所以它留在......

你说你“想让Mac应用程序看起来像Mac应用程序”,正如你所指出的,Mac应用程序往往没有对接窗口。因此,实现自己的对接窗口可能是朝错误方向迈出的一步;)

答案 1 :(得分:2)

+1给Ken的答案。

从用户的角度来看,除非它是应用程序的集成,就像它在Adobe CS或Eclipse中一样,我希望所有内容尽可能简洁,并且所有不同的选项和显示都不受我影响,因此我可以专注于文档。

我认为你会发现,对于mac用户来说,拥有“用户技能”的人可以使用重新排列面板,在大多数情况下会选择热键绑定,而那些没有“技能”水平的人只是会混淆。

我建议尽量保持简单。

答案 2 :(得分:2)

许多Mac应用程序中常见的一件事是隐藏所有Chrome并专注于您的内容。这就是许多窗口右上角“tic tac”工具栏控件背后的重点。许多对接UI的一个严重缺点是它们希望您占据窗口的大部分时间,因为停靠的面板可能会遮挡内容。即使对接的面板是可折叠的,它们留下的空间通常也只是浪费并充满了白色空间。因此,如果您在界面中构建一个停靠面板,您应该期望它在大多数时间都可见。例如,iTunes的源列表显然设计为始终可见,但您可以双击播放列表以在新窗口中打开它。

为了适应Mac控件的范围,我建议你尝试对一些没有跨平台UI的应用程序做一些认真的工作;例如,iWork应用程序,Interface Builder或Preview。请注意控件的显示位置和原因 - 工具栏,底栏,检查器,源列表/侧边栏,面板(如IB的库)或字体和颜色面板中的上下文HUD。不要忘记菜单栏。了解控制感 - 他们的响应能力,模态,大小,分组和一致性。尝试培养一些品味 - 并非一切都是完美的;如果你想要取笑,可以试试iCal。

请注意,控件没有“一刀切”,这可能是对接UI的问题。考虑工作流程非常重要:控制器的使用方式,是否可以直接操作替换它,是否需要可见的状态指示,是否可以在适当的情况下通过键盘和鼠标操作,等等。弄清楚控件的位置和行为如何让用户更有效地工作。

作为一个简单的例子,说明在其他不太好的应用程序中良好与不良的控件放置和行为,比较OmniGraffle和Keynote中的图像蒙版。在OmniGraffle中,这使用图像检查器,您必须首先单击未标记的按钮(“自然尺寸”)以启用适当的控件,然后使用图像缩略图或通过图像缩略图以低保真度方式调整尺寸和位置。在字段中键入百分比。试图直接调整框架大小的行为是一种奇怪和违反直觉的方式。

在Keynote中,屏蔽开始于一个明智命名的菜单项或工具栏项,使用HUD弹出你点击蒙面图像的瞬间,并允许直接操作,包括合理显示图像的范围你是掩蔽。当您拖动蒙面图像时,它甚至会跟随指南。高级用户可以完全忽略HUD,只需双击图像即可切换蒙版编辑并使用手柄进行大小调整。应该很容易看到,有一些警告(例如,“编辑遮罩”模式的状态应该在HUD中可见而不是仅从图像中看到;应该更有效地使用您正在屏蔽的图像的外边框) Keynote在这方面要好得多,部分原因是因为它没有使用检查员。

也就是说,如果您有大量选项并且标准选项卡式检查器布局不适合您,请查看Omni Group的OmniInspector框架。尝试好好使用它,希望你现在能够弄清楚如何对UI进行过多的观察: - )

答案 3 :(得分:1)

(以慢动作跑,恐慌地伸出手)Nnnnnoooooooo !!!!!

:-)说真的,正如我在回答Ken的优秀答案中提到的那样,尝试在OS X UI上强制使用“Windowsism”绝对是一个坏主意。在我看来,Windows UI的最大问题是第三方开发人员发明了呈现UI的新的和不一致的方式,而不是保持一致并遵循既定的约定。对于Mac用户来说,这是一个糟糕的应用程序的标志。这是出于某种原因。

我建议您在考虑Mac OS的情况下,从头开始重新考虑 UI 应用程序的实现。如果您已经完成了自己的工作,那么架构和模型(没有平台特定的实现)应该清楚地转换到任何平台。

在用户界面方面,你已经使用Mac一年了,所以你应该对“规范”有一个很好的了解。如果您有疑问,最好发一个问题,详细说明您需要提供什么,以及您对如何做到这一点的想法(或询问您如何不知道)。

只是不要用丑陋的棍子打击你的应用程序,强迫它的行为好像它在Windows中运行时显然不是。对于Mac用户来说,这就是死亡之吻。