Установите цвет фона NSView и NSImageView в cocoa

У меня есть некоторый NSViews% NSImageView, который я сделал в IB, как я могу настроить цвет фона для каждого, когда приложение awakesFromNib?

После google и поиска здесь я обнаружил, что это можно сделать, создав собственный класс NSView или NSImageView и задав цвет в методе drawRect.

Это их другой способ, с помощью которого я могу установить цвет фона, и нет необходимости создавать дополнительный класс для View/ImageView.

Спасибо

Ответ 1

Это два способа установить цвет фона NSView/NSImageView, который я нашел.

Сначала:. Подклассификация NSView/NSImageView

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

Второй:

Не хотите создавать подкласс, как вы упомянули в своем вопросе. Тогда

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

Здесь _backgroundView является IBOutlet/object NSView/NSImageView. Вам просто нужно получить доступ к слою NSView/NSImageView для предоставления ему backgroundcolor без их подклассификации.

Ответ 2

вы не можете нарисовать что-то обычай без подкласса NSView, но вы можете изменить цвет фона слоя.

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

Ответ 3

Вы можете применить цвет фона к любому потомку NSView через Interface Builder, выполнив расширение категории следующим образом:

@implementation NSView (backgroundColor)

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

@end

и укажите значение для него в панели атрибутов User Defined Runtime Attributes в IB:

введите описание изображения здесь