it-swarm.com.ru

iOS - цвет на симуляторе Xcode отличается от цвета на устройстве

Обзор

Цвет фона моего приложения для iPhone в симуляторе (iMac) отличается от цвета на устройстве (iPhone 3GS).

РЕДАКТИРОВАТЬ (добавлен следующий раздел)

Следующие все разные:

  1. цвет раскадровки (файл xib)
  2. цвет симулятора
  3. цвет устройства

Я полагаю, я должен идти с тем, как это выглядит на устройстве.

Вопросы

  1. Является ли это общей проблемой, с которой сталкиваются другие разработчики, и есть ли способ подобрать цвета (систематическая процедура)?
  2. будет ли цвет выглядеть по-разному на разных версиях iPhone (3gs/4/4s) или на всех цветах?
  3. Я что-то упустил, есть ли какой-то определенный цветовой профиль, который я должен использовать?
  4. Есть ли что-то вроде практического правила, когда значения RGB меняются на определенный процент?
  5. В iPhone 4 и 4S цвет соответствует симулятору? (У меня нет iPhone4 и 4S, поэтому я не уверен.)
38
user1046037

Благодарим @jtbandes за предложение отправить скриншоты, которые привели к решению

Я просто отвечаю на вопрос для полноты.

Шаги, за которыми я следовал:

  1. Сделайте скриншот изображения в раскадровке
  2. Сделайте скриншот изображения на устройстве (используйте поток почты/фото обратно на ваш Mac)
  3. Используйте средство выбора цвета (часть цветовой палитры Mac OS), чтобы выбрать одно и то же место на обоих снимках экрана
  4. Запишите значения RGB (доступные в цветовой палитре Mac OS) точек, выбранных на шаге 3
  5. сравнить оба значения RGB и увидеть разницу
  6. добавьте смещение RGB, чтобы соответствовать цвету.

Мое смещение RGB (не следует слепо)

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

  • Красный +12
  • Зеленый +19
  • Синий +16

под разными углами (лучше держать горизонтально)

Удержание телефона под разными углами также дает разные оттенки, а горизонтальное положение дает цвет

19
user1046037

Как уже отмечали другие, это проблема цветовых пространств .

Необходимо выполнить две задачи:

  1. Получите исходный цвет, используя цветовое пространство sRGB.
  2. Установите цвет в Интерфейсном Разработчике, используя цветовое пространство sRGB.

Задание 1

Вы можете использовать приложение Apple Digital Color Meter для выборки нужного цвета, используя опцию Display in sRGB, но вывод очень ограничен.

Другой вариант - использовать приложение типа SipIt (доступно бесплатно в App Store, последний раз я проверял). Убедитесь, что вы выполняете выборку в правильном цветовом пространстве, выполнив:

Preferences -> General -> Color Profiles -> sRGB

Вы также можете установить выходной формат (например, шестнадцатеричная строка).

enter image description here Задание 2

В Интерфейсном Разработчике откройте окно Цвет, выберите вторую панель, выберите "Ползунки RGB". Затем нажмите на значок шестеренки, чтобы выбрать цветовой профиль sRGB.

enter image description here

После этого вставьте значение цвета в поле Hex Color #

Вы сделали! Ваши цвета должны соответствовать.

Я никоим образом не связан с SipIt. Но я пользуюсь им несколько лет, и это очень удобно. Я бы порекомендовал это любому дизайнеру.

9
Womble

Текущая (по состоянию на 17.03.14) ссылка на CGColorSpace содержит следующий текст, в котором говорится, что sRGB - это цветовое пространство нативного устройства для iOS.

Цветовые пространства и iOS: iOS не поддерживает ColorSync, поэтому все ресурсы должны быть предоставлены в цветовом пространстве собственного устройства: sRGB.

8
John

Это о цветовых пространствах .

Убедитесь, что вы выбираете цвет из пространства sRGBcolor и реплицируете его значения RGBA в Interface Builder, выбрав sRGB IEC61966-2.1 в раскрывающемся меню.

Если вы выберете цвет в одном цветовом пространстве и сгенерируете его в другом цветовом пространстве, он будет выглядеть по-разному, несмотря на то, что он повторял одинаковые значения RGBA.

Также имейте в виду, что когда вы генерируете цвет с помощью кода, используя UIColor(red:green:blue:alpha:), он генерируется в цветовом пространстве sRGB по умолчанию. Вот почему так удобно использовать этот (вместо Adobe RGB, P3 или любого другого). Кроме того, sRGB - это стандарт, который в настоящее время наиболее широко используется в отрасли.

Интересный факт: тот конструктор UIColor, о котором я упоминал выше, создает цвета в пространстве sRGB начиная с Xcode8. До этого эта функция использовалась для их создания в пространстве Generic RGB. Вот почему это может вызвать путаницу тоже.

Вот ресурс, который расширяет эту тему: https://medium.com/@volbap/working-efficiently-with-colors-in-xcode-bc4c58b16f9a

4
Pablo V.

Еще одно простое решение при работе с файлами изображений в вашем приложении. Во-первых, установите цветовое пространство в XCode в sRGB IEC61966-2.1 и примените ваши цвета. Затем, прежде чем импортировать изображения в свое приложение, сопоставьте их с профилем sRGB IEC61966-2.1 с помощью утилиты ColorSync на Mac. Отлично сработало для меня, и мой фон теперь идеально соответствует моим импортированным изображениям. Надеюсь, это кому-нибудь поможет.

1
Dusan Juranovic

iPhone использует управление цветовым пространством, поэтому, если вы хотите более "научное" решение, вы можете создать собственное цветовое пространство, например, с помощью CGColorSpaceCreateCalibratedRGB. Это на уровне ядра графики, хотя.

1
MrTJ

Лучший способ преобразовать значения RGB в sRGB - использовать инструмент "Цифровой измеритель цвета" в Mac, просто отметьте "Отображать в sRGB".

Digital Color Meter

затем используйте значения sRGB в вашем коде вместо RGB native values

enter image description here

с помощью этого инструмента вы можете узнать общий цвет RGB и установить его непосредственно в xcode в качестве значений RGB.

1
MohyG

Вы можете использовать это webPage для различных колод цветов в Xcode. например, Generic и Device Colors немного отличаются.

0
S At

У меня была похожая проблема, особенно с зеленью в моем проекте. Моя проблема оказалась в том, что некоторые из моих активов были созданы в иллюстраторе, а цвет был установлен на CMYK вместо RGB. Я не уверен, была ли это ваша проблема или нет, но это может быть полезно для тех, кто столкнется с этим вопросом в будущем. Я изменил иллюстратор "Режим цвета документа" на RGB и все хорошо.

0
user3102878