|
- Application Kit-
NSColor
Application Kit - NSColor
システムカラーの設定を取得する
Keywords: System color, selectedControlColor, selectedTextColor
アプリケーションで強調枠を表示したり、テキスト選択のバックグラウンドには、ユーザがコントロールパネルで設定した色を使いたいよね。それらを得るには、NSColor のシステムカラー関係のメソッドを使う。ドキュメントにはたくさんの API がのっているけど、Aqua 環境で現在使えると書かれているのは、selectedControlColor と selectedTextColor の 2 つだけだ。他のやつは、プラチナ・アピアランスと互換を取るために残してあるらしい。
Application Kit/NSColor.h
+ (NSColor *)selectedControlColor;
+ (NSColor *)selectedTextColor;
実際に使ってみる。
SystemColor/SystemColorAppDelegate.m
- (void)awakeFromNib
{
// システムカラーを取得する
[_selectedControlColor
setColor:[NSColor selectedControlColor]];
[_selectedTextColor
setColor:[NSColor selectedTextColor]];
...
}

このサンプルを実行したまま、“システム環境設定”の“一般”で、“強調表示色”を変えると、selectedControlColor が変わるのが分かるよ。だけど、selectedTextColor を変更する方法がわからない。どっかのコントロールパネルの奥に埋もれているのか?
■サンプルダウンロード:
SystemColor.tar.gz
Application Kit - NSColor
システムカラーの変更を受け取る
Keywords: System color, NSSystemColorsDidChangeNotification
では、コントロールパネルでシステムカラーが変更されたことを検出するには?システムカラーが変更されると、NSSystemColorsDidChangeNotification が投げられるんだ。
Application Kit/NSColor.h
APPKIT_EXTERN NSString *NSSystemColorsDidChangeNotification;
これを NSNotificationCenter を使って受け取ればいい。
SystemColor/SystemColorAppDelegate.m
- (void)awakeFromNib
{
...
// Set observer
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(systemColorsDidCanged:)
name:NSSystemColorsDidChangeNotification
object:nil];
}
これで、システムカラーが変更されたときに、systemColorsDidChanged: が呼び出されるんだ。
■サンプルダウンロード:
SystemColor.tar.gz
|