問題タブ [nsstatusbar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - ダークモードの切り替え時にNSAppearanceが更新されない
macOS ステータス バーでのみ実行される macOS アプリがあります。Info.plist の「Application is agent (UIElement)」プロパティを「YES」に変更しました。
次のように、外観の名前を 5 秒ごとに出力するタイマーがあります。
問題
システム設定でダークモードとライトモードを切り替えても、名前は実際には変わりません。アプリケーションの起動時に設定された外観の名前が常に出力されます。
システムの外観の変化を聞く方法はありますか?
ゴール
私の最終目標は、実際には を に描画し、NSAttributedString
それをボタンの画像としてNSImage
使用することです。NSImage
NSStatusItem
私が使用する属性付き文字列のテキストはUIColor.labelColor
、システムの外観に基づいているはずです。ただし、システムの外観の変更を尊重していないようです。
アプリケーションをダーク モードで起動してからライト モードに切り替えると、次のようになります。
アプリケーションをライト モードで起動してからダーク モードに切り替えると、次のようになります。
サイドノート
を に変えてNSAttributedString
をボタンに直接NSImage
使用しない理由は、ステータス バーに正しく配置されていないためです。NSAttributedString
NSStatusItem
attributedTitle