- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在自定义 View 上绘制一个 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:]: the color NSPatternColorSpace CGImageSource=0x400367d60" )> cannot be converted into color space Generic RGB colorspace
_color = [NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.png"]]
该图像完全不透明,是一个 png 文件。有任何想法吗?也许我应该更改文件类型?我不知道...
如果我像这样定义_color
:
_color = [[NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.tiff"]] colorUsingColorSpace: [NSColorSpace genericRGBColorSpace]]
则不显示渐变。没有什么。就像我没有 drawRect:
方法一样。有什么想法吗?
最佳答案
NSGradient 不能将图案作为其中一种颜色。这就是异常(exception)告诉你的。它仅适用于可转换为 RGB 颜色的 NSColor。如果您想让图案褪色至清晰,则必须采用其他方法。
关于objective-c - NSImage +imageWithPatternColor : and NSGradient - Cocoa/Mac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674966/
我正在自定义 View 上绘制一个 NSGradient ,如下所示: - (void)drawRect: (NSRect)dirtyRect { NSGradient* g = [[NSGr
我是一名优秀的程序员,十分优秀!