2016-11-19 17 views
1

NSPopoverの内部では、サブビュー(ラベル、プッシュボタンなど)の中には自動的に有効にするものがあります。これは、ユーザーが「システム環境設定」で「透明度を下げる」ように設定していない限り、Popoverの背後にあるコンテンツが暗い色になっていると、アプリが非常に悪く見えるようにします。 Popoverのコンテンツビューをサブクラス化し、allowsVibrancyをfalseに設定すると、全体的にポップオーバーが半透明になり、見栄えがよくなります。しかし、私のアプリは、活力が完全に無効になっているときに最もよく見えると思う。NSViewごとに動作を無効にする

私の質問は、NSViewの各サブクラスをサブクラス化せずに、すべてのビューに対してどのようにして活力を無効にするのですか?あなたはこのトリックとソリッドカラーを使用するようにポップオーバーを設定することができ

答えて

1
+0

vibrancyを無効にしてカスタム背景色を設定することは同じではありません。 vibrancyを無効にすると、ビューは不透明になります。OSによって使用されるテーマ(明るいまたは暗い)と一致するデフォルトの背景色は変更されません。 – Ethan

0

あなたが確認するポップオーバーの外観(または他のビューを設定することによって、これを達成することができます非です-vibrant)には、NSAppearanceNameAquaの外観があります。例えば ​​

それ以外の場合、デフォルトでは、popoversはVibrantLightの外観になります。

+0

'NSAppearanceNameAqua'を設定する問題は、OSのテーマが暗く設定されていても、Popoverは常にライトアピアランスを使用するということです。 OSのテーマを尊重しながら透明性を無効にする唯一の方法は、各NSViewをサブクラス化し、 'allowsVibrancy'をfalseに設定することです。 – Ethan

関連する問題