2

Apple の「Pro」アプリ (Final Cut Pro X、Compressor など) は、ユーザーがシステム設定で「青」を設定している場合でも、常に「グラファイト」の外観を表示する方法を知りたいと思っていました。

いくつかの調査を行うと、それを実現するコードが NSProApplicationMain という関数にあることがわかりました。新しい Xcode プロジェクトを作成し、それを ProKit.framework にリンクし、NSApplicationMain の代わりに NSProApplicationMain を交換すると、アプリは「グラファイト」の外観になります。

誰がこれが起こるのか知っていますか? システムコールか何かですか?

4

3 に答える 3

7

私はついにそれを理解しました。それは本当にシンプルで、プライベート API を使用する必要はありません。

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

新しいiMovieに付属するProKitフレームワークを分解することでそれを発見しました;)

編集: 上記のコードは、UIApplicationMain の前に実行する必要があります。

于 2013-12-25T03:28:19.173 に答える
1

似たような外観にしたい場合はNSBorderlessWindowMask、今のところ使用して、多くの微妙な点を再実装する必要があります. 信号機のボタンを正しく設定するには、少し手間がかかります。ウィンドウがキーまたはメインであり、アプリケーションが最前面にあることに基づいて、すべての外観を変更する必要があります。
NSAppearance将来役に立つものになるかもしれません。息を止めて待ってはいけません。NSWindowNSWindowControllerNSView、の深みに行き、NSViewControllerその後、新しいスタイルで他のすべてのコントロールとビューを実装するのが難しい部分です。

于 2013-12-14T06:03:05.703 に答える