NSImage + imageWithPatternColor: и NSGradient - Какао / Mac - PullRequest
2 голосов
/ 30 декабря 2011

Я рисую в пользовательском представлении 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. Есть идеи? возможно я должен изменить тип файла? Я не знаю ...

EDIT:

Если я определю _color следующим образом:

_color = [[NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.tiff"]] colorUsingColorSpace: [NSColorSpace genericRGBColorSpace]]

тогда градиент не отображается. Ничего такого. Как будто у меня не было метода drawRect:. Есть идеи?

1 Ответ

1 голос
/ 11 апреля 2012

NSGradient не работает с рисунком в качестве одного из цветов. Это то, что говорит вам исключение. Он будет работать только с NSColor, который можно преобразовать в цвет RGB. Если вы хотите, чтобы ваш шаблон исчез, чтобы очистить, вам придется сделать это по-другому.

...