2

我的意思是,如果用户愿意,以允许标准 OS X 外观和自定义外观(从图像文件加载)的方式重写/扩展默认 AppKit 控件将涉及多少工作?(想想 WinAmp 或 Windows Media Player。)有没有人试图把它带到 Mac 上?

我了解如何重绘一个NSWindow或一个纽扣电池,但这都是硬编码的。我想要用户可以添加到自己的东西。我有哪些选择?

4

2 回答 2

2

嗯,它真的需要从头开始重新绘制您需要的所有自定义组件,无论是在代码中还是使用图像。AppKit 并不是要定制的,因为它严格遵循 Apple 的人机界面指南;Apple 希望在所有原生应用程序中创建一个一致的 UI 隐喻。

这在实践中意味着您将不得不做很多自定义绘图来为您的应用程序设置主题。使用图像使事情变得更容易,但不是太多。如果您想要一个自定义按钮,您必须创建一个子类NSButtonNSButtonCell加载您想要和绘制的图像(查看NSDrawThreePartImage()NSDrawNinePartImage()了解如何更轻松地绘制可调整大小的按钮)。要主题化NSWindow,您必须子类NSThemeFrame化,这是一个绘制标准 OS X 窗口外观的半私有类。

本质上,您只需要进行大量子类化即可获得所需的外观。可能吗?绝对地。推荐还是容易做?没那么多。


当然,你必须问这是否真的有必要。HIG 的重点是尝试在 OS X 上创建一种标准外观。如果没有熟练地完成,主题外观可能会很俗气,甚至可能会让习惯于默认 OS X 外观的用户感到困惑。如果你想包含 UI 主题,通常需要有充分的理由(要么保持跨平台兼容性,但在这种情况下,所有 HIG 规则都不在窗外;要么实现特定的外观,là 游戏UI),但我真的不建议这样做,更不用说让用户自己自定义您的 UI。

于 2012-04-21T16:31:00.713 回答
0

是的,这完全有可能。但是您确定要使用 AppKit 来执行此操作吗?也许更好地使用像 QT 这样支持通过 CSS 换肤的跨平台解决方案?

于 2012-04-21T20:30:49.057 回答