NSImage имеет непрозрачность при использовании с NSValueTransformer

Я пытаюсь показать NSImage в зависимости от значения enum из Core Data. Я использую Value Transformer на NSImageCell, привязанном к значению, на котором я выбираю изображение для показа.

Он работает отлично, и, к сожалению, при использовании NSValueTransformer изображение приобретает непрозрачность, которой не должно быть.

Это выдержка из моего подкласса NSValueTransformer:

+ (void)initialize
{
    downloadingImage = [NSImage imageNamed:@"downloading.png"];
    downloadFailedImage = [NSImage imageNamed:@"download_failed.png"];
    downloadCompleteImage = [NSImage imageNamed:@"download_complete.png"];
}
+ (Class)transformedValueClass { return [NSImage class]; }
+ (BOOL)allowsReverseTransformation { return NO; }
- (id)transformedValue:(id)value {
    switch([value intValue])
    {
        case DownloadStatusComplete:
            return downloadCompleteImage;
        case DownloadStatusFailed:
            return downloadFailedImage;
        case DownloadStatusNone:
            return nil;
        case DownloadStatusDownloading:
            return downloadingImage;
        default:
            return nil;
    }
}

Соответствующие статические определения NSImage:

static NSImage* downloadingImage;
static NSImage* downloadFailedImage;
static NSImage* downloadCompleteImage;

и enum, который я использую:

typedef enum {
    DownloadStatusNone,
    DownloadStatusDownloading,
    DownloadStatusComplete,
    DownloadStatusFailed
} DownloadStatus;

Ниже приведен скриншот из реального приложения и один без NSValueTransformer, но статический NSImage назначен в IB. Так что не PNG имеет альфа или что-то в этом роде. Это происходит с тремя разными изображениями из разных мест.

http://imageshack.us/a/img195/2492/appqe.png http://imageshack.us/a/img27/3289/43084671.png

1 ответ

Решение

Член какао-головы Ахен указал мне на: Почему мои изображения в моем NSTableView исчезли?

От Джима Коррейи о Какао-Деве:

"На 10.6 NSImageView будет рисовать свое содержимое затемненным, когда элемент управления отключен.

В вашей привязке включен параметр "Условные наборы включен"."

Это решило это для меня!

Другие вопросы по тегам