使用图像设置自定义视图的背景会产生黑色背景

时间:2014-03-27 08:26:52

标签: objective-c cocoa background nsview

我在设置名为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

1 个答案:

答案 0 :(得分:0)

imageNamed:获取文件名,而不是路径名,并在包中搜索文件名。如果您希望从路径加载图像,请使用initWithContentsOfFile:。请参阅NSImage documentation