頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


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

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

NSSegmentedControlで画像を設定した場合(1)
↑ところが文字ではなく画像を設定すると選択、非選択とも元の画像そのままだ。
青い背景だと選択時のが見にくい。できれば文字のように白くなった方が視認性が高い。
Xcodeで選択、非選択それぞれの画像を指定できるのか?と探すもなさそう。

なので自作した。
画像を白黒両方準備するのが面倒なので黒画像のみ作成しておき、白画像は黒画像を反転(※1)させたのを使用する。
クリック時にそれぞれの画像を選択、非選択で適切な画像を設定する、というのを完成させた。

ところがその後で気付いた。
元々それ用のコードが用意されてたことに。
NSSegmentedControlクラスではなくNSImageクラスのプロパティにisTemplateというのがある。
これを真にしておくだけ。
for index in 0..<segmentedControl.segmentCount {
segmentedControl.image(forSegment: index)?.isTemplate = true
}
↑あらかじめ全ての項目に設定しておくと

NSSegmentedControlで画像を設定した場合(2)
↑それだけで選択時には白くしてくれる。
あー、時間を無駄にした、、、



参考ページ
※1 Swift:左右反転した画像,白黒画像,ネガポジ反転画像を生成する - Qiita
スポンサーサイト




<< NSTableViewでセルの編集をしたい時にハマったこと  TopPage  iOSアプリ、ポケモンGO用「わざタイプ相性表」をリリース >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1357-1c686be5




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.