So-net無料ブログ作成
検索選択

macOSのダークモードでステータスバー対応が面倒な感じ。 [プログラミング]

mailpeeper-tlsでいつだかに導入されたDockとメニューバーのダークモードにてこずった。ググっても全然情報が出てこないからスクラッチしようと思っていたが決着があっさりついた。

http://qiita.com/itoru257/items/445738ed0bf7fadf1ebf

これを調べる前は
macos menu bar darkとか
macos status bar darkで
調べたんだけど、全然出てこない。xcodeとかで絞っても駄目だった。

メニューバーベースのアプリケーションはそもそも少ないわけで、AppleのDeveloperなページで読んでスクラッチするしかないかと思っていた。

https://developer.apple.com/reference/appkit/nsstatusbar

これあたりかなぁと思ったり。


でも結局、一番初めに貼ったリンクの先の
[[[NSAppearance currentAppearance] name] containsString:NSAppearanceNameVibrantDark]
というところを判断材料にして適宜実装しないといけないってことらしい。

ただ、アイコンの状態変化がいくつかあるので、その度にチェックを入れてアイコンを描き直さないといけないというのは、正直だるいというかソースがあまりきれいでなくなる気がする。アイコンだけじゃなくて文字もフォントの色変えないといけないしね。

というか、AppleがUIの変更に合わせるようにアプリケーションの変更を迫るのってどうなんだ。もっと気にするべきバグとかがあるんじゃないんですかねAppleさん。


ともあれ、dark modeに手動で変更した場合の通知って、どこで受け取るんだっけ。AppControllerあたりなのかな。最初はawakeFromNibあたりで設定すればいいものの、不定期に変えられた場合はどうなるのかとかは調べてない。

status barもそうだけど、macOS独自のシステムプログラミングが慣れてない。というか調べれば終わりなんだけど、Macって使い方ばっかり出てきてどんだけ利用者をバカにしているユーザーがいるんだよってなもんで。Windowsの調べ物って結構数があって速攻でかたがつくんだけどな。


しかし、上の解決法は使えなかった。途中でダークモードに変えた場合に対応してくれないみたいなのだ。だから、途中から
[[[NSAppearance currentAppearance] name] containsString:NSAppearanceNameVibrantDark]
を発動させて変えさせることができない。何にしても面倒だ。そしていちいち変更を加えるのは煩雑過ぎてコードの中に入れ込むのはあまりうれしくない。

http://mackuba.eu/2015/03/04/how-to-add-icons-to-menu-bar-on-yosemite/

これはどうかなと思ってやってみる。どこからの情報か知らないけど面倒がなさそうでよさげだ。動けばなんでもいいんだけどさ。


あ~できた。

NSImage *icon = [NSImage imageNamed:@"icon_menu.png"];
icon.template = YES;
statusItem.image = icon;
statusItem.highlightMode = YES;

を自分のソースに適用したら白黒を勝手にいい感じにしてくれる。変な話白黒逆転していてもたぶん大丈夫。もしかしたら最初にやった方法では根本的な解決にならないんだろうな。Qiitaとか玉石混淆すぎるし、きちんとした情報じゃない場合は自分のブログにでも書けよ。


.xcassetsを導入したから、.icnsファイルともファイル名で管理ともおさらばだ。とはいえ、面倒だから全部それに変更したわけじゃないけど。assetsを使ったのは実はダークモードが解決するかと思って使ったけど、あんまり影響はないようだった。白黒のアイコンにしてあげないと似合わないので、新しくステータスバーのアイコンを変えてあげないとな。そういうのセンスがないんだけどまぁ今はフリーの素材もあることだし。


イメージは解決したから、あとは文字だな。受信件数を数字で示しているのだけれど、今のところダークモードでも普通モードでも大丈夫な設定に変えられていない。いろいろ設定を真似て見たものの、イメージの設定とはちょっと違うよう。灰色にしてどっちも見えるようにするっていう回避方法は避けたい。まぁそのうちそのうち。

コメント(0) 
共通テーマ:パソコン・インターネット

コメント 0