[英]NSImage +imageWithPatternColor: and NSGradient - Cocoa/Mac
我在這樣的自定義視圖上繪制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“)>無法轉換為顏色空間通用RGB顏色空間
_color = [NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.png"]]
圖像是完全不透明的,是png文件。 有任何想法嗎? 也許我應該更改文件類型? 我不知道...
如果我這樣定義_color
:
_color = [[NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.tiff"]] colorUsingColorSpace: [NSColorSpace genericRGBColorSpace]]
則不會顯示漸變。 沒有。 就像我沒有drawRect:
方法一樣。 有任何想法嗎?
NSGradient不適用於作為顏色之一的圖案。 那就是異常告訴你的。 它僅適用於可以轉換為RGB顏色的NSColor。 如果要使圖案淡入淡出,則必須采用另一種方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.