我有一些我在IB中制作的NSViews%NSImageView,如何在应用程序awakesFromNib时为每个设置背景颜色?
谷歌搜索后,我发现可以通过创建自定义类NSView或NSImageView并在其drawRect方法中设置颜色来完成。
他们可以通过其他任何方式设置背景颜色,而无需为View / ImageView创建额外的类。
由于
答案 0 :(得分:40)
他们是两种设置NSView / NSImageView背景颜色的方法,我找到了。
首先:通过NSView/NSImageView
- (void)drawRect:(NSRect)aRect
{
[[NSColor redColor] set];
NSRectFill([self bounds]);
}
第二名:
不要像你在问题中提到的那样创建子类。 然后
[_backgroundView setWantsLayer:YES];
[_backgroundView.layer setBackgroundColor:[[NSColor redColor] CGColor]]];
此处_backgroundView
是NSView/NSImageView
的IBOutlet /对象。你只需要访问NSView/NSImageView
层就可以给他backgroundcolor而无需继承它们。
答案 1 :(得分:11)
如果没有子类化NSView,您无法绘制自定义内容,但是您可以更改图层的背景颜色。
[yourView setWantsLayer: YES];
[yourView.layer setBackgroundColor: [NSColor redColor].CGColor];
答案 2 :(得分:1)
在Swift中,您可以像这样更改NSImageView
的背景颜色:
self.myBackgroundView.wantsLayer = true
self.myBackgroundView.layer?.backgroundColor = NSColor.red.cgColor
如果要将图像用作背景,可以使用以下内容:
self.myBackgroundView.wantsLayer = true
let image : NSImage = #imageLiteral(resourceName: "imageResourceName")
self.myBackgroundView.layer?.backgroundColor = NSColor.init(patternImage: image).cgColor
答案 3 :(得分:0)