Я пытаюсь показать NSImage в зависимости от значения enum из Core Data. Я использую трансформатор значений на NSImageCell, привязанный к значению, на котором я выберите изображение для показа.NSImage имеет непрозрачность при использовании с NSValueTransformer
Он работает отлично и, как предполагалось, несчастливо при использовании 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;
и перечисление я использую:
typedef enum {
DownloadStatusNone,
DownloadStatusDownloading,
DownloadStatusComplete,
DownloadStatusFailed
} DownloadStatus;
Ниже приведен скриншот от фактического приложения и один без NSValueTransformer, но статический NSImag e, присвоенный в IB. Так что PNG не имеет альфы или чего-то еще. Это происходит с тремя разными изображениями из разных мест.
actual application http://imageshack.us/a/img195/2492/appqe.png static image http://imageshack.us/a/img27/3289/43084671.png