19 Stimmen

Wie man NSWindow eine bestimmte Hintergrundfarbe gibt

Ich schreibe eine Cocoa-Anwendung, die ein NSWindow hat. Ich möchte die Hintergrundfarbe des Fensters auf eine bestimmte Farbe ändern. Aber die Fenstereigenschaften im Inspektor bieten nur die Alternative "Texturiertes Fenster". Wie kann ich die Farbe des Fensters wie gewünscht einstellen?

28voto

Dirk Stoop Punkte 3070

Versuchen Sie, die Instanzmethode setBackgroundColor: mit einer Farbe für Ihre Fensterinstanz aufzurufen. Was steckt in einem Namen ;)

Zum Beispiel so:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Option 1
    [self.window setBackgroundColor: NSColor.whiteColor];
    // Option 2 - using dot syntax
    self.window.backgroundColor = NSColor.whiteColor;
}

15voto

Oleg Korzhukov Punkte 557

Der einfachste Weg, den Fensterhintergrund zu ändern, ist, ihn direkt in Ihrer .xib-Datei festzulegen.

Überhaupt kein Code:

  1. Wählen Sie Ihr Fenster aus (die Klasse NSWindow sollte im Feld Klasse erscheinen)
  2. Klicken Sie auf die Schaltfläche [+] unter den benutzerdefinierten Laufzeitattributen
  3. Geben Sie "backgroundColor" ein und wählen Sie Farbe

Window Properties in XCode

5voto

Peter Hosey Punkte 94684

Solange Sie nur die Hintergrundfarbe des Inhaltsbereichs und nicht die des Rahmens und der Symbolleiste ändern wollen, brauchen Sie keine Unterklasse NSWindow . Was Sie tun müssen, ist die Unterklasse NSView und lassen Sie Ihre benutzerdefinierte Ansicht die gewünschte Farbe zeichnen, und setzen Sie dann eine Instanz dieser Klasse als Inhaltsansicht des Fensters.

Alternativ dazu können Sie auch eine randlose NSImageView o NSColorWell als die Inhaltsansicht, aber ich bin mir nicht sicher, ob Apple meint, dass diese Unteransichten haben sollen. Wenn nicht, müssen Sie Ihr Fenster leer lassen.

Das heißt, Sie sollten まったくもって sicherstellen, dass eine benutzerdefinierte Hintergrundfarbe angemessen ist. In den meisten Fällen ist dies nicht der Fall, und Sie sollten sich an das Aussehen von Aqua oder HUD halten.

1voto

diciu Punkte 28693

Sie müssen die Unterklasse NSWindow anlegen, um den Hintergrund zu ändern, und dann die Implementierung für

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

Ein Beispiel hierfür ist das HUDWindow von Mat Gemmell: http://mattgemmell.com/2006/03/12/hudwindow

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X