NSSegmentedControlで選択時の画像を白くする

↑macOSのNSSegmentedControlで各項目に文字列を設定すると選択したところの文字の色は白になってくれる。

↑ところが文字ではなく画像を設定すると選択、非選択とも元の画像そのままだ。
青い背景だと選択時のが見にくい。できれば文字のように白くなった方が視認性が高い。
Xcodeで選択、非選択それぞれの画像を指定できるのか?と探すもなさそう。
なので自作した。
画像を白黒両方準備するのが面倒なので黒画像のみ作成しておき、白画像は黒画像を反転(※1)させたのを使用する。
クリック時にそれぞれの画像を選択、非選択で適切な画像を設定する、というのを完成させた。
ところがその後で気付いた。
元々それ用のコードが用意されてたことに。
NSSegmentedControlクラスではなくNSImageクラスのプロパティにisTemplateというのがある。
これを真にしておくだけ。
for index in 0..<segmentedControl.segmentCount {↑あらかじめ全ての項目に設定しておくと
segmentedControl.image(forSegment: index)?.isTemplate = true
}

↑それだけで選択時には白くしてくれる。
あー、時間を無駄にした、、、
参考ページ
※1 Swift:左右反転した画像,白黒画像,ネガポジ反転画像を生成する - Qiita
スポンサーサイト