12

我在编写工具时具有 Windows 编程背景,但过去一年一直在使用 Carbon 和 Cocoa 进行编程。我承认,我通过躲避 UI 编程向 Mac 介绍了自己。我基本上一直在视图中交换我的 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 应用程序。我总是发现跨平台库往往会失去这种效果,当我看到带有花哨的 Cocoa 过渡和动画的原生 Mac UI 时,我总是微笑。这也是我学习Cocoa的一个很好的借口。

话虽如此,如果有一个开源 Cocoa 库可以做到这一点,我很想知道它!我很想看看其他人是如何做到这一点的,并有助于平滑 Cocoa 的学习曲线。

干杯,

谢恩

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

4

4 回答 4

10

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

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

于 2010-02-13T01:33:19.417 回答
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 :-)

于 2010-02-13T03:11:18.953 回答
2

+1 肯的回答。

从用户的角度来看,除非它像 Adob​​e CS 或 Eclipse 那样集成到应用程序中,否则我希望一切都尽可能简洁,并且所有不同的选项和显示都不受我的影响,这样我就可以专注于文档。

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

我建议尽可能简单。

于 2010-02-13T01:40:43.543 回答
1

(慢动作奔跑,惊慌失措地伸出手)Nnnnnooooooooooooooooooooooooooooooooooooooooooooooooooo!!!

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

我鼓励你重新考虑你的用户界面 应用程序的实现从头开始考虑 Mac OS。如果你的工作做得很好,那么架构和模型(没有特定于平台的实现)应该清楚地转化为任何平台。

在 UI 方面,您已经使用 Mac 一年了,所以您应该对“规范”有一个很好的了解。如果您有疑问,最好发布一个问题,具体详细说明您需要展示的内容以及您对如何做的想法(或者如果您不知道如何做)。

只是不要用丑陋的棍子敲打你的应用程序,强迫它表现得好像它显然不是在 Windows 中运行一样。对于 Mac 用户来说,这是一个应用程序的死亡之吻。

于 2010-02-13T02:23:13.263 回答