我在设置名为TitlebarView
的子类NSView的背景时遇到问题。我希望通过colorWithPattternImage
将图像用作背景,但结果是黑色背景而不是我将该方法作为参数的图像。
这是我的TitlebarView
代码:
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSString* pathToTitlebarBGImage = [[NSBundle mainBundle] pathForResource:@"titlebar_bg" ofType:@"png" inDirectory:@"Resources/gui_images"];
NSLog(@"path to titlebar bg image: %@", pathToTitlebarBGImage);
// NSString* pathToTitlebarBGImage = @"Resources/gui_images/titlebar_bg.png";
self.titlebarBGImage = [NSImage imageNamed:pathToTitlebarBGImage];
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
[[NSColor colorWithPatternImage:self.titlebarBGImage] setFill];
// [[NSColor redColor] setFill];
NSRectFill(dirtyRect);
}
titlebarBGImage
是头文件中正确设置的属性
如果我使用redColor
行,我会得到红色的视图,因此代码在某种程度上起作用。我可以在文档中找到有关stackoverflow的所有内容,这实际上应该按预期工作。我在这里缺少什么?
这是我发现的整体问题的孤立问题here
答案 0 :(得分:0)
imageNamed:
获取文件名,而不是路径名,并在包中搜索文件名。如果您希望从路径加载图像,请使用initWithContentsOfFile:
。请参阅NSImage
documentation。