Swift - 为什么 NSColor 在渲染时变浅

标签 swift macos cocoa nscolor

我创建了 NSWindow 并将其背景色设置为绝对蓝色 (#0000FF)。但是当窗口被渲染时,颜色比它应该的颜色“更亮”(#0F3FFB)。

class LilWindow: NSViewController {
   override func viewDidLoad() {
        self.view.window?.backgroundColor = 
             NSColor.init(red: 0, green: 0, blue: 1, alpha: 1)


}

有谁知道为什么会这样以及如何解决这个问题? (附截图)

enter image description here

最佳答案

好吧,在摆弄代码和@KenThomases 的帮助几个小时后,我想通了,如果你想让你的 RGB 颜色在 NSImagesNSWindows 上看起来正确,您必须将其转换为 NSDeviceRGBColorSpace 色彩空间。为此,我编写了一个简单的函数:

func toScreenColor(color:NSColor) -> NSColor {
  var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0

  color
  .colorUsingColorSpaceName(NSCalibratedRGBColorSpace)!
  .getRed(&red, green: &green, blue: &blue, alpha: &alpha)

  return NSColor(deviceRed: red, green: green, blue: blue, alpha: alpha)
}

关于Swift - 为什么 NSColor 在渲染时变浅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37307113/

相关文章:

ios - UIActivityViewController 撰写 View 在尝试共享视频时快速自行消失

ios - 如何快速向uiimage添加彩色边框

python - mac os 上的 cython 入门

ios - CloudKit 自定义区域通知在 OSX 上似乎已损坏

objective-c - NSDictionary 的哈希值

ios - 过滤嵌套数组和字典

swift - 添加了隐私 key ,但在关闭 UIImagePickerController 时仍然崩溃

objective-c - 将 OSReturn 值转换为人类可读的定义

objective-c - NSMenu 项目上的黑色色调

xcode - 在IB中添加自定义 subview