19

NSWindowを備えたココアアプリケーションを書いています。ウィンドウの背景色を特定の色に変更したい。ただし、インスペクターのウィンドウプロパティは、「テクスチャウィンドウ」の代替手段のみを提供します。どうすればウィンドウの色を希望どおりに作成できますか?

4

4 に答える 4

28

ウィンドウインスタンスの色を使用して、インスタンスメソッドsetBackgroundColor:を呼び出してみてください。名前って何.. ;)

このような:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Option 1
    [self.window setBackgroundColor: NSColor.whiteColor];
    // Option 2 - using dot syntax
    self.window.backgroundColor = NSColor.whiteColor;
}
于 2008-12-30T00:50:34.113 に答える
16

ウィンドウの背景を変更する最も簡単な方法は、.xib ファイルで直接設定することです。

コードはまったくありません:

  1. ウィンドウを選択します (クラス フィールドに NSWindow クラスが表示されます)。
  2. User Defined Runtime Attributes の下の [+] ボタンをクリックします。
  3. 「backgroundColor」と入力し、[色] を選択します

XCode のウィンドウ プロパティ

于 2014-10-20T13:52:47.650 に答える
5

フレームやツールバーではなく、コンテンツ領域の背景色のみを変更したい場合は、 をサブクラス化する必要はありませんNSWindow。あなたがする必要があるのは、サブクラスNSView化して、カスタム ビューに目的の色を描画させ、そのクラスのインスタンスをウィンドウのコンテンツ ビューとして設定することです。

NSImageView別の方法として、ボーダレス ビューまたはコンテンツ ビューとして設定することで回避できる場合もありますがNSColorWell、Apple がサブビューを持つことを意図しているかどうかはわかりません。そうでない場合は、ウィンドウを空のままにしておく必要があります。

とはいえ、カスタムの背景色が適切であることを十分に確認する必要があります。ほとんどの場合、そうではなく、Aqua または HUD の外観に固執する必要があります。

于 2008-12-29T16:07:03.577 に答える
1

背景を変更してからの実装をオーバーライドするには、NSWindowをサブクラス化する必要があります。

- (id)initWithContentRect:(NSRect)contentRect
                styleMask:(NSUInteger)styleMask
                  backing:(NSBackingStoreType)bufferingType
                    defer:(BOOL)flag

例として、Mat GemmellのHUDWindowを参照してください:http://mattgemmell.com/2006/03/12/hudwindow

于 2008-12-29T12:07:49.940 に答える