我正在绘制一个NSGradient
像这样的自定义视图:
- (void)drawRect: (NSRect)dirtyRect
{
NSGradient* g = [[NSGradient alloc] initWithStartingColor: _color endingColor: [NSColor clearColor]];
[g drawInRect: [self bounds] angle: 90];
}
_color
例如,如果是正常颜色,[NSColor blueColor]
则一切正常。问题是_color
来自一个图案图像(在这种情况下,它大部分是灰色的,上面有一些花哨的像素),当这种情况发生时,程序会不断记录这个错误:
*** -[NSGradient initWithColors:atLocations:colorSpace:]: 颜色 NSPatternColorSpace CGImageSource=0x400367d60" )> 无法转换为颜色空间 Generic RGB 颜色空间
_color = [NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.png"]]
该图像完全不透明,是一个 png 文件。有任何想法吗?也许我应该更改文件类型?我不知道...
编辑:
如果我_color
这样定义:
_color = [[NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.tiff"]] colorUsingColorSpace: [NSColorSpace genericRGBColorSpace]]
然后不显示渐变。没有。就像我没有drawRect:
方法一样。有任何想法吗?