为mac创建可自定义的GUI有多难?

时间:2012-04-21 14:47:42

标签: objective-c xcode macos cocoa

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

我理解如何重绘NSWindow或按钮单元格,但这些都是硬编码的。我想要用户可以添加的东西。我有什么选择?

2 个答案:

答案 0 :(得分:2)

嗯,无论是在代码中还是使用图像,它都会涉及从头开始重新绘制所有需要的自定义组件。 AppKit并不是为了定制,因为它严格遵循Apple的Human Interface Guidelines; Apple希望在所有本机应用程序中创建一个一致的UI隐喻。

在实践中,这意味着你将不得不做大量的自定义绘图来主题你的应用程序。使用图像可以使事情变得更容易,但不会过多。如果你想要一个自定义按钮,你必须创建一个NSButtonNSButtonCell的子类来加载你想要的图像并绘制(看看NSDrawThreePartImage()和{{1} }如何更容易地绘制可调整大小的按钮)。对于主题NSDrawNinePartImage(),您必须继承NSWindow,这是一个绘制标准OS X窗口外观的半私有类。

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


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

答案 1 :(得分:0)

是的,完全有可能。但你是否想要使用AppKit做到这一点?也许更好地使用像QT这样的跨平台解决方案来支持通过CSS进行换肤?