2014-06-09 4 views
12

Ich habe einige NSViews% NSImageView, die ich in IB gemacht habe, wie kann ich eine Hintergrundfarbe für jedes einrichten, wenn die App vonFromNib aufwacht?Hintergrundfarbe von NSView und NSImageView in Kakao setzen

Nach Google und Suche hier, fand ich, dass durch Erstellen benutzerdefinierter Klasse von NSView oder NSImageView getan werden kann und Farbe in ihrer DrawRect-Methode festlegen.

Ist ihre andere Möglichkeit, mit der ich Hintergrundfarbe festlegen kann und keine zusätzliche Klasse für View/ImageView erstellen muss.

Dank

+0

AFAIK gibt es keinen anderen Weg. Sie müssen eine Unterklasse erstellen, um die Hintergrundfarbe festzulegen. – GoodSp33d

Antwort

35

Ihre sind zwei Möglichkeiten, Hintergrundfarbe von NSView/NSImageView, die ich gefunden habe.

Erstens: Durch Subclassing von NSView/NSImageView

- (void)drawRect:(NSRect)aRect 
{ 
    [[NSColor redColor] set]; 
    NSRectFill([self bounds]); 
} 

Zweitens:

Wollen nicht Unterklasse machen, wie Sie in Ihrer Frage erwähnt. Dann

[_backgroundView setWantsLayer:YES]; 
[_backgroundView.layer setBackgroundColor:[[NSColor redColor] CGColor]]]; 

Hier _backgroundView ist das IBOutlet/Objekt von NSView/NSImageView. Sie müssen nur auf die Ebene zugreifen, um ihm Hintergrundfarbe zu geben, ohne sie zu unterklassifizieren.

10

Sie nicht etwas Brauch ohne Subklassen NSView ziehen können jedoch Sie Hintergrundfarbe der Schicht ändern kann.

0

Sie können durch die Implementierung einer Kategorie Erweiterung wie diese eine Hintergrundfarbe zu jeder NSView Nachkomme über Interface Builder gelten:

@implementation NSView (backgroundColor) 

- (void)setBgColor:(NSColor *)color { 
    // 
    [self setWantsLayer:YES]; 
    self.layer = [CALayer layer]; 
    [self.layer setBackgroundColor:[color CGColor]]; 
} 

@end 

und sorgen für sie in der User Defined Runtime-Attribute Panel in IB Wert:

enter image description here