Jaa*_*nus 5 cocoa appkit nscolorspace
我的设计师指定了要绘制的颜色.当我尝试在Cocoa应用程序中绘制该颜色时,我得到的结果颜色与Sketch.app显示的参考图像明显不同.
我制作了一个小型Cocoa应用程序,可以绘制自定义视图.这是代码中有趣的部分.请注意,我正在初始化SRGB空间中的颜色.
class View: NSView {
override func drawRect(dirtyRect: NSRect) {
let components : [CGFloat] = [156.0/255.0, 0, 254.0/255.0, 1]
let color = NSColor.init(SRGBRed: components[0], green: components[1], blue: components[2], alpha: components[3])
color.setFill()
NSRectFill(self.bounds)
}
}
Run Code Online (Sandbox Code Playgroud)
这是它绘制的内容.(没关系光标的部分.我删除了窗口阴影,这样就可以更容易地与其他窗口并排查看.)

这是Sketch文件部分:

将它们放在一起,这里是Sketch文件和自定义视图的并排,以及显示鼠标光标下的颜色值的Xscope放大镜.
将鼠标悬停在Sketch文件上时,我看到:

将鼠标悬停在我的自定义视图上时,我会看到:

您可以看到Xscope读取的黑色鼠标光标下的像素颜色值明显不同.我的Retina Macbook Pro显示器的颜色也有很大不同,但有趣的是,在捕获的屏幕截图PNG中没有那么不同.
但是:到目前为止,这一切都是通过默认显示设置和颜色配置文件"Color LCD"完成的(硬件是Retina Macbook Pro及其内置显示屏).当我在OSX设置应用程序中手动将显示配置文件更改为"sRGB IEC61966-2.1",然后使用Xscope再次采样颜色时,您可以看到这些采样值:

在对自定义视图进行采样时:

最有趣的是,您可以看到Xscope在我的自定义视图上采样的值与指定的值完全匹配,并且颜色在视觉上也是正确的.但是,当然,我不能让我的用户更改他们的显示配置文件.
我的问题:如何使我的自定义视图颜色与Sketch中的颜色(用于目视检查和使用Xscope放大镜采样时)与默认的彩色LCD显示配置文件完全匹配?
我自己刚刚解决了这个问题。这是我的过程。刚刚在 Retina Macbook Pro 上进行了测试。
在 Cocoa 中使用该值:
-(void)drawRect:(NSRect)dirtyRect {
[[NSColor colorWithCalibratedRed:0/255.0 green:150/255.0 blue:200/255.0 alpha:1] set];
NSRectFill(self.bounds);
}
Run Code Online (Sandbox Code Playgroud)
这应该可行,因为“通用 RGB”是一个独立于设备的空间,相当于 Cocoa 中的“校准”色彩空间。
| 归档时间: |
|
| 查看次数: |
670 次 |
| 最近记录: |