2012-04-06 2 views
32

ОбзорIOS - цвет на Xcode симулятора отличается от цвета на устройстве

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

EDIT (следующий раздел был добавлен)

Ниже приведены все разные:

  1. история плата цвет (XIB файл)
  2. Тренажер цвет
  3. цвет устройства

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

Вопросы

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

Снимок экрана определенно поможет здесь. О чем мы говорим иначе? – jtbandes

+1

Устройство использует стекло горилл ... и ваш монитор, скорее всего, этого не делает. Это будет тонко влиять на то, как человеческий глаз воспринимает цвет из-за искажения световой волны. Всегда смотрите, как он выглядит на устройстве. Это вряд ли будет выглядеть по-разному между устройствами, если только один из них не работает правильно. – borrrden

+0

спасибо borrden, да мне нравится идти с цветом устройства, но я не знаю, как соответствовать этим цветам – user1046037

ответ

19

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

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

шаги я следовал:

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

Мой RGB смещения (не следовать слепо)

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

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

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

Держа телефон в различных углах также дает разные оттенки, сохраняя его горизонтальное сделал дают цвет

+2

На самом деле вы называете управление цветом: http://en.wikipedia.org/wiki/Color_management – MrTJ

+0

благодарит @MrTJ, я понимаю, что iPhone не использует цветовые профили, и поэтому я следовал описанным выше шагам, если это лучший подход, который мне было бы интересно узнать. спасибо – user1046037

+0

Отличный пост. Я одновременно благодарен за ваши смещения и разочарован, что они нужны вообще. Невооруженным глазом, хотя предложения прекрасны. Наконец мой default.png изящно переходит к фону меню приложения. – Ternary

1

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

+0

спасибо @MrTJ pardon мое невежество, я использую изображения (текстуры), это тоже работает с изображениями? – user1046037

+1

Да, вы можете установить цветовое пространство для любого контекста рендеринга, включая экран. Тогда ваше цветовое пространство будет применено к тому, что вы рисуете в этом контексте визуализации. См. Https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_color/dq_color.html (особенно в последней главе) и http://developer.apple.com/library/mac/. # qa/qa1396/_index.html – MrTJ

+0

Хотя API существует, он, похоже, не имеет никакого эффекта. Создание 'CGColor' с использованием' CGColorSpaceCreateCalibratedRGB() ', а затем привлечение его в контекст DeviceRGB приводит к точному тому же значению цвета. (Это может быть удержание от OS X или включать в себя для будущей проверки.) –

8

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

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

+1

Просьба указать ссылку на цитированную ссылку, чтобы сделать ваш ответ лучше. – Szymon

+0

@Szymon https://developer.apple.com/library/ios/Documentation/GraphicsImaging/Reference/CGColorSpace/index.html – GuramK

0

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

1

Лучший способ для преобразования значения RGB в SRGB использует «Digital Color Meter» инструмент в макинтоше, просто установите флажок «Показать в SRGB»

Digital Color Meter

затем использовать значение SRGB в коде вместо RGB native values

enter image description here

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

5

Как указывали другие, это вопрос Цветные пространства.

Две задачи должны быть выполнены:

  1. Получить цвет источника с использованием цветового пространства SRGB.
  2. Установите цвет в Interface Builder, используя цветовое пространство sRGB.

Задача 1

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

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

Preferences -> General -> Color Profiles -> sRGB 

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

enter image description here Задача 2

В Interface Builder, открыть окно Color, выбрать вторую панель, выберите "RGB ползунки". Затем нажмите на значок cog, чтобы выбрать цветной профиль sRGB.

enter image description here

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

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

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

+0

Используя Sip, сопоставление цветовых пространств между Sip и Xcode помогло получить одинаковый цвет для шестнадцатеричного поля в Xcode color picker. +1 для этого :). НО цвета в Xcode и Sketch все еще не совпадают :( –

0

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

0

Речь идет о Цветовые пространства.

Убедитесь, что вы выбираете цвет из цветового пространства sRGB и копируете его значения 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

1

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

Смежные вопросы