2014-06-09 15 views
12

Mam niektóre NSViewView NSView NS, które zrobiłem w IB, jak mogę ustawić kolor tła dla każdego, gdy aplikacja awakesFromNib?Ustaw kolor tła NSView i NSImageView w kakao

Po znalezieniu google i wyszukiwania tutaj, można to zrobić, tworząc niestandardową klasę NSView lub NSImageView i ustawić kolor w ich metodzie drawRect.

Jest to ich inny sposób, dzięki któremu mogę ustawić kolor tła i nie ma potrzeby tworzenia dodatkowych klas dla widoku/obrazu.

Dzięki

+0

AFAIK nie ma innego sposobu. Musisz ustawić widok podklasy, aby ustawić kolor tła. – GoodSp33d

Odpowiedz

35

Ich są dwa sposoby, aby ustawić kolor tła NSView/NSImageView, który znalazłem.

pierwsze: Przez instacji od NSView/NSImageView

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

II:

Nie chcą, aby podklasy, jak wspomniałeś w swoim pytaniu. Następnie

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

Tutaj _backgroundView jest IBOutlet/przedmiot NSView/NSImageView. Musisz tylko uzyskać dostęp do warstwy NSView/NSImageView, aby nadać mu kolor tła bez podklasy.

10

nie można narysować coś niestandardowego bez instacji NSView jednak można zmienić kolor tła warstwy.

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

Można zastosować kolor tła do dowolnego potomka NSView poprzez interfejs Builder poprzez wdrożenie rozszerzenie kategorii takiego:

@implementation NSView (backgroundColor) 

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

@end 

i podać wartość dla niego w Runtime User Defined Atrybuty panelu w IB:

enter image description here