2

私は次の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:方法を持っていなかったかのように。何か案は?

4

1 に答える 1

1

NSGradientは、色の1つとしてパターンを使用することはできません。それは例外があなたに言っていることです。RGBカラーに変換できるNSColorでのみ機能します。パターンをフェードさせてクリアにしたい場合は、別の方法で行う必要があります。

于 2012-04-10T23:19:13.283 に答える