Cocoa 为什么我的NSTableView中的图像会淡出?

Cocoa 为什么我的NSTableView中的图像会淡出?,cocoa,cocoa-bindings,nstableview,nstablecolumn,nsimagecell,Cocoa,Cocoa Bindings,Nstableview,Nstablecolumn,Nsimagecell,首先,有一个NSArrayController(“服务器”),其内容是一组“服务器”对象 我还有一个带有列的NSTableView。该列已绑定到服务器的“arrangedObjects.status”属性 我使用自定义的NSValueConverter将该状态转换为列的dataCell的图像,这是一个NSImageCell 我不明白的是,为什么列中显示的图像是正确的,但总是褪色。只是为了测试,我在表视图外有相同的图像进行比较,它画得很好。图像中的颜色不是半透明的 NSImageCell是否将图像

首先,有一个
NSArrayController
(“服务器”),其内容是一组“服务器”对象

我还有一个带有列的
NSTableView
。该列已绑定到服务器的“arrangedObjects.status”属性

我使用自定义的
NSValueConverter
将该状态转换为列的
dataCell
的图像,这是一个
NSImageCell

我不明白的是,为什么列中显示的图像是正确的,但总是褪色。只是为了测试,我在表视图外有相同的图像进行比较,它画得很好。图像中的颜色不是半透明的


NSImageCell
是否将图像绘制为褪色?是否可以在IB中配置使其完全饱和的内容?

您可以将图像视图单元格或列的“enabled”属性设置为NO(或在IB中取消选中)。我相信这会使显示的图像褪色。

来自Jim Correia在Cocoa Dev上的报道:

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


您的绑定已启用“条件设置启用”。

Hmmm。。。图像单元格的“enabled”属性和表本身的“enabled”属性都会被明确选中。表列没有启用的属性。启用的属性也不会绑定到任何对象。但是,通过进行像素比较,图像的绘制就好像它们被禁用一样。纯粹的猜测:可能是使用了值转换器(如果NSImageViewCell不知道如何“设置”新图像,则可以通过绑定机制强制禁用它)。你应该能够在没有任何转换的情况下为它提供图像的原始数据。这对我来说似乎很奇怪,但将NSImageCell的border属性设置为“None”意味着它以半透明方式绘制图像。为什么会这样,我不知道。现在我认为这与绑定有关。我可以拖动一个没有边框的图像。当我拿那个图像实例并绑定它时,它突然变得半透明。我也有同样的问题,但多亏了你,我解决了。非常感谢。