Нет такой вещи, как "чистый" цвет RGB, который бы соответствовал от одного дисплея к другому. Если вы не работаете в стандартизированном цветовом пространстве, числа, отображаемые для цвета на одном дисплее, вероятно, будут отображаться на другом экране немного иначе.
Пусть ваш дизайнер преобразует ваши макеты в стандартное цветовое пространство, такое как sRGB. Затем вы можете использовать методы NSColor, которые принимают не только значения компонентов, но и цветовое пространство, в котором находятся компоненты; это даст вам цвета, которые должны выглядеть одинаково на любом дисплее.
Другими словами, образец цвета, сделанный из (R, G, B) = (1.0, 1.0, 1.0) в Photoshop с использованием sRGB, должен выглядеть практически идентично образцу цвета, нарисованному с использованием цвета, полученного таким образом:
NSColorSpace *sRGB = [NSColorSpace sRGBColorSpace];
CGFloat components[3] = { 1.0, 1.0, 1.0 };
NSColor *sRGBRed = [NSColor colorWithColorSpace:sRGB components:&components count:3];
Обратите внимание, что +[NSColorSpace sRGBColorSpace]
доступно только в Mac OS X 10.5 Leopard и выше. Если вам все еще нужно работать на Tiger, вы можете написать маленькое служебное приложение, которое работает на 10.5 и преобразует канонические цвета sRGB в калиброванное пространство RGB:
NSColor *calibratedColor = [sRGBRed colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
Независимо от того, используете ли вы sRGB или калиброванное пространство, если у вас есть набор цветов, вы можете поместить их в NSColorList, который вы записываете в файл, а затем загружать из ресурсов вашего приложения во время выполнения.