Установите цвет фона 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:
![введите описание изображения здесь]()