Неверный цвет в интерфейсе Builder

Проблема: Я установил цвет в Interface Builder, установив каналы RGB, затем сделаю снимок экрана рабочего окна, откройте его в Photoshop и проверьте цвет с помощью набора цветов, который у меня есть в интерфейсе Builder. Результат - значения RGB отличаются от значений, которые я установил.

Видео: http://www.youtube.com/watch?v=ASLfnYHPbqM

Большинство ненормальных начинается с 45-й секунды, когда я пытался использовать набор цветов для Interface Builder. Он показывает, что значения RGB отличаются от тех, которые у меня есть у него одинаковые и установлены), но значения выбора цветного блока IB совпадают со значениями выбора цвета Photoshop.

Ответ 1

Apple думает, что гораздо важнее, чтобы цвета выглядели одинаково везде, чем в разных цветах. Смотрите, те же значения RGB не будут выглядеть одинаково на разных экранах, потому что каждый экран имеет разные характеристики дисплея.

Поэтому, когда вы снимаете снимок экрана, Apple не просто сохраняет значение RGB для каждого пикселя на изображении, но также сохраняет характеристики дисплея вашего монитора внутри файла изображения. Для чего это полезно? Если кто-то еще откроет ваш скриншот, система может посмотреть на характеристики монитора человека, который его создал, сравнить их с характеристиками монитора монитора человека, который хочет его посмотреть, и затем рассчитать, как он должен принимать RGB значения на изображении, чтобы изображение выглядело одинаково на текущем мониторе. Если бы он просто отображал значения RGB без каких-либо изменений, то цвета изображений выглядели бы неправильно (в некоторых случаях только немного, а в некоторых случаях и еще немного, и если у пользователя очень плохой монитор, в некоторых случаях даже радикально неправильный),

Таким образом, система передает разные значения RGB в графический адаптер, потому что цвета RGB сами по себе не описывают цвет. Значения RGB вместе с профилем монитора описывают цвет, а не значения RGB, важны цвет. Если я сделаю что-то красное, я хочу, чтобы на каждом мониторе был такой же оттенок красного цвета. Я не хочу, чтобы он был более темным красным на одном мониторе, светлее красного на другом мониторе и красный, который почти розовый на третьем мониторе.

Проблема с Photoshop заключается в том, что у нее есть собственный встроенный механизм коррекции цвета. Photoshop обычно работает в sRGB (стандартное цветовое пространство RGB) или Adobe RGB (расширенное цветовое пространство, изобретенное Adobe). Когда вы загружаете изображение, которое не находится в желаемом цветовом пространстве, Photoshop преобразует цветовое пространство изображения, и каждое преобразование цветового пространства приводит к изменению значений RGB. Обратите внимание, что изображения, отображаемые в Photoshop, по-прежнему корректируются по цвету в соответствии с вашими текущими характеристиками цвета монитора, это просто значения RGB, которые вы управляете в Photoshop, которые находятся в другом цветовом пространстве и при сохранении обратно в файл Photoshop либо преобразует значения обратно, либо он сохранит их и добавит новый цветовой профиль в файл изображения.

Время, когда один RGB использовался для описания цветов, уже много лет. Сегодня RGB довольно бессмысленна сама по себе, только когда она сочетается с цветовым профилем, она действительно имеет смысл в описании фактического цвета.

Если вам нужен скриншот без встроенного реального цветового профиля, сделайте следующее:

  • Откройте "Системные настройки"
  • Перейдите в раздел "Дисплеи"
  • Перейдите в раздел "Цвет"
  • Выберите "Общий профиль RGB"
  • Сделайте снимок экрана
  • Измените свой профиль назад

Может потребоваться сначала закрыть Xcode, прежде чем изменять профиль (и перезапустить его после его изменения), так как я не уверен, что изменение профиля имеет немедленный эффект. Это, безусловно, имеет непосредственное влияние на то, как вещи отображаются на вашем мониторе, но если вы хотите выбрать цвет в Xcode, выбрав определенные значения RGB, я не уверен, что изменение профиля также будет иметь непосредственный эффект здесь (вы можете дать его попробуйте без перезапуска, если это не сработает, вы должны повторить его с перезапуском).

Это может по-прежнему вызывать неправильные цвета в Photoshop, поскольку Photoshop может преобразовывать цвета в sRGB или Adobe RGB. Поэтому вместо выбора "Generic RGB Profile" вы можете выбрать профиль "sRGB" (в зависимости от вашей версии OS X, также можно назвать "sRGB IEC61966-2.1" ). Таким образом, изображение уже находится в цветовом пространстве sRGB. Вам нужно только убедить Photoshop сохранить его таким образом (и не преобразовывать его в Adobe RGB), а затем вы действительно увидите те же значения RGB в Xcode и Photoshop.

Заметьте, как изменение цветового профиля делает ваш дисплей совершенно другим? Вы думаете, что изменение цвета резко? Поверьте мне, это ничто по сравнению с тем, как разные мониторы могут иногда менять цвета. Возможно, теперь вы можете понять, почему цветокоррекция так важна. Поэтому возникает вопрос: почему ценности RGB так важны для вас в первую очередь? Действительно ли имеет значение, что значения RGB одинаковы, если отображаемый цвет одинаковый?

Ответ 2

Это руководство, которое работает, просто выполните следующие действия, и вы можете программно настроить UIColor и сопоставить цвета с скриншотом.

введите описание изображения здесь