我正在尝试根据Core Data中的枚举值显示NSImage。 我在NSImageCell上使用Value Transformer绑定到我的值 选择要显示的图像。
在使用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,但在IB中分配了静态NSImage。因此,不是PNG具有alpha或其他东西。这种情况发生在三个不同位置的不同图像中。
actual application http://imageshack.us/a/img195/2492/appqe.png static image http://imageshack.us/a/img27/3289/43084671.png
答案 0 :(得分:10)
亚琛可可头的一名成员向我指出:Why are my images in my NSTableView faded out?
来自Jim Correia的Cocoa-Dev:
“在10.6上,当禁用控件时,NSImageView会将其内容绘制为灰色。
您的绑定已启用“条件设置已启用”。“
这为我解决了!