这是否可以使用Cocoa在OS X上获得用户的高亮颜色?

时间:2014-03-19 06:26:02

标签: objective-c cocoa

我希望使用Cocoa的颜色值:

enter image description here

感谢。

2 个答案:

答案 0 :(得分:8)

用户的NSColor突出显示颜色将是控件颜色 selectedControlColor

据我所知,您首先必须将selectedControlColor转换为已知的颜色空间,因为它不是基于NSNamedColorSpace。

  

NSNamedColorSpace =目录名称和颜色名称组件       此颜色空间的组件是准备颜色的列表或目录的索引。命名颜色的目录附带   能够在给定的上生成正确颜色的查找表   设备


  

一般情况下,建议您使用校准(或通用)   颜色空间而不是设备颜色空间。设备中的颜色   颜色空间可能因设备而异,但经过校准   颜色空间通常会产生相当准确的颜色。设备   另一方面,色彩空间可能会产生更好的性能   在某些情况下,如果您确定知道该设备将会   渲染或捕捉颜色,改为使用设备颜色空间。


代码示例

 NSColor *aColor = [[NSColor selectedControlColor] colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
    if (aColor) {
        NSLog(@"   Red %f, Green %f, Blue %f,  Alpha %f,", aColor.redComponent,aColor.greenComponent,aColor.blueComponent,aColor.alphaComponent);
    }

请参阅Creating and Converting Color Spaces section in the Color Programming Topics

这将让您更多地了解这是如何工作的,并找出颜色有多少组件。

答案 1 :(得分:4)

您可以使用NSColor类上的方法来获取用户的偏好。

Accessing System Colors 中的 Color Programming Topics 部分指出

  

NSColor有许多返回系统颜色的方法:颜色   由用户偏好控制。这些颜色 - 目前只有   selectedControlColorselectedTextBackgroundColor - 应该被使用   想要创建自定义控件或子类的开发人员   控制,同时尊重用户的颜色偏好。