2

我想知道 Apple 的“Pro”应用程序(Final Cut Pro X、Compressor 等)如何始终显示“石墨”外观,即使用户在系统偏好设置中设置了“蓝色”。

进行一些调查后,我发现实现它的代码位于一个名为 NSProApplicationMain 的函数中。如果我创建一个新的 Xcode 项目,将它链接到 ProKit.framework 并交换 NSProApplicationMain 而不是 NSApplicationMain,应用程序将获得“石墨”外观。

任何人都知道是什么导致了这种情况发生?有系统调用什么的吗?

4

3 回答 3

7

我终于想通了,它真的很简单,不涉及使用私有API:

[[NSUserDefaults standardUserDefaults] setVolatileDomain:@{@"AppleAquaColorVariant": @6} forName:NSArgumentDomain];

我通过拆卸新 iMovie 附带的 ProKit 框架发现了它;)

编辑:上面的代码必须在 UIApplicationMain 之前运行。

于 2013-12-25T03:28:19.173 回答
2

ProKit implements that look itself. It's not relying on a built in graphite appearance in AppKit.

There's no supported way to use this appearance other than reimplementing it yourself.

于 2013-12-14T02:46:12.357 回答
1

如果想要有类似的外观,您NSBorderlessWindowMask现在需要使用并重新实现很多微妙之处。交通信号灯按钮是正确的工作。一切都应该根据窗口是键或主窗口以及最前面的应用程序来改变它的外观。
NSAppearance将来可能会变成有用的东西。不要屏住呼吸等待。深入了解NSWindow, NSWindowController, NSView,NSViewController之后,困难的部分是用你的新风格实现所有其他控件和视图。

于 2013-12-14T06:03:05.703 回答