NSWindowを備えたココアアプリケーションを書いています。ウィンドウの背景色を特定の色に変更したい。ただし、インスペクターのウィンドウプロパティは、「テクスチャウィンドウ」の代替手段のみを提供します。どうすればウィンドウの色を希望どおりに作成できますか?
4 に答える
ウィンドウインスタンスの色を使用して、インスタンスメソッドsetBackgroundColor:を呼び出してみてください。名前って何.. ;)
このような:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Option 1
[self.window setBackgroundColor: NSColor.whiteColor];
// Option 2 - using dot syntax
self.window.backgroundColor = NSColor.whiteColor;
}
ウィンドウの背景を変更する最も簡単な方法は、.xib ファイルで直接設定することです。
コードはまったくありません:
- ウィンドウを選択します (クラス フィールドに NSWindow クラスが表示されます)。
- User Defined Runtime Attributes の下の [+] ボタンをクリックします。
- 「backgroundColor」と入力し、[色] を選択します
フレームやツールバーではなく、コンテンツ領域の背景色のみを変更したい場合は、 をサブクラス化する必要はありませんNSWindow
。あなたがする必要があるのは、サブクラスNSView
化して、カスタム ビューに目的の色を描画させ、そのクラスのインスタンスをウィンドウのコンテンツ ビューとして設定することです。
NSImageView
別の方法として、ボーダレス ビューまたはコンテンツ ビューとして設定することで回避できる場合もありますがNSColorWell
、Apple がサブビューを持つことを意図しているかどうかはわかりません。そうでない場合は、ウィンドウを空のままにしておく必要があります。
とはいえ、カスタムの背景色が適切であることを十分に確認する必要があります。ほとんどの場合、そうではなく、Aqua または HUD の外観に固執する必要があります。
背景を変更してからの実装をオーバーライドするには、NSWindowをサブクラス化する必要があります。
- (id)initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)styleMask
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag
例として、Mat GemmellのHUDWindowを参照してください:http://mattgemmell.com/2006/03/12/hudwindow