Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos NSImage与NSValueTransformer一起使用时不透明度_Macos_Cocoa_Nsimage_Nsvaluetransformer_Nsimagecell - Fatal编程技术网

Macos NSImage与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"

我试图根据核心外数据的枚举值显示NSImage。 我正在NSImageCell上使用一个值转换器,该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;
以及我使用的枚举:

typedef enum {
    DownloadStatusNone,
    DownloadStatusDownloading,
    DownloadStatusComplete,
    DownloadStatusFailed
} DownloadStatus;
下面是实际应用程序的屏幕截图,其中没有NSValueTransformer,但在IB中分配了静态NSImage。因此,PNG没有alpha或其他内容。这发生在来自不同位置的三个不同图像上


一位cocoaheads亚琛的成员向我指出:

吉姆·科雷亚关于可可开发的评论:

“在10.6上,当控件被禁用时,NSImageView将其内容绘制为灰色

您的绑定已启用“条件集启用”

这帮我解决了