Macos NSImage与NSValueTransformer一起使用时不透明度
我试图根据核心外数据的枚举值显示NSImage。 我正在NSImageCell上使用一个值转换器,该NSImageCell绑定到我所使用的值 选择要显示的图像 当使用NSValueTransformer时,它可以完美地工作,并且是有意的,不可调谐的。图像会得到不应有的不透明度 这是我的NSValueTransformer子类的摘录:Macos NSImage与NSValueTransformer一起使用时不透明度,macos,cocoa,nsimage,nsvaluetransformer,nsimagecell,Macos,Cocoa,Nsimage,Nsvaluetransformer,Nsimagecell,我试图根据核心外数据的枚举值显示NSImage。 我正在NSImageCell上使用一个值转换器,该NSImageCell绑定到我所使用的值 选择要显示的图像 当使用NSValueTransformer时,它可以完美地工作,并且是有意的,不可调谐的。图像会得到不应有的不透明度 这是我的NSValueTransformer子类的摘录: + (void)initialize { downloadingImage = [NSImage imageNamed:@"downloading.png"
+ (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或其他内容。这发生在来自不同位置的三个不同图像上
一位cocoaheads亚琛的成员向我指出: 吉姆·科雷亚关于可可开发的评论: “在10.6上,当控件被禁用时,NSImageView将其内容绘制为灰色 您的绑定已启用“条件集启用” 这帮我解决了