Используйте PNG напрямую
Вы упоминаете, что подозреваете, что в PDF есть PNG. Я бы порекомендовал использовать PNG напрямую без PDF.
PDF-файлы отображаются Apple в PNG при их развертывании на устройстве. Этот рендеринг может применять определенный цветовой профиль (PDF и управление цветом - это широкая тема).
Также сам рендеринг может не дать ожидаемых результатов, см., Например. https://bjango.com/articles/idontusepdfs/
16 бит на пиксель (на канал)
В Руководстве Apple по человеческому интерфейсу указано, что необходимо использовать 16 бит на пиксель и экспортировать изображения в формате .png.
При необходимости используйте цветовой профиль Display P3 со скоростью 16 бит на пиксель (на канал) и экспортируйте изображения в формате .png.
см. Здесь: https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color/#color-management
Наконец, я хотел бы упомянуть еще две настройки, которые вы, вероятно, уже используете:
Сжатие
В инспекторе атрибутов для графических ресурсов вы должны выбрать «Без потерь».
Gamut
Перейдите к «sRGB и Display P3», а затем убедитесь, что ваше изображение находится в слоте «Display P3» в файле .xcasset.
Тест с PNG-экспортом эскиза
Взглянув на диаграмму цветности, можно увидеть, что цветовое пространство P3 имеет большую гамму для зеленоватых цветов.
Поскольку я не уверен, смогу ли я распознать разницу между двумя цветовыми пространствами, я провел следующий эксперимент:
- вставил артборд в Sketch
- создал зеленый прямоугольник с цветом # 00FF00
- назначен в разделе <Файл / Изменить цветовой профиль> Дисплей P3 Цветовой профиль
- выделил прямоугольник и нажал Экспортировал выбранное
- выбрали .png без чередования
Тогда я сделал то же самое, но с профилем sRGB ICE61966-2.1.
Я проверил оба .png в утилите ColorSync (можно найти в / Applications / Utilities). При нажатии на кнопку панели инструментов информации об изображении можно увидеть, что назначены правильные профили ColorSync.
В Affinity Photo я проверил в количество бит на канал. Это было для обоих .pngs 8 бит на канал, поэтому я создал два дополнительных .png с 16 битами на канал и назвал его соответствующим образом.
Затем я добавил 4 .pngs в папку .xcassets со следующими настройками:
- Сжатие: «без потерь»
- Шкала: «Одна шкала»
- Гамма: 'sRGB и дисплей P3'
- назначил .pngs соответственно правильному слоту (sRGP или Display P3).
Затем я развернул на iPhone X.
Результат: На самом деле я вижу разницу между зелеными прямоугольниками. «Дисплей P3» действительно имеет более насыщенный зеленый цвет.
Я экспортировал то же самое на старый iPhone, где я не вижу различий между изображениями sRGB и Display P3.
Мне показалось интересным, что 8-битный вариант непосредственно из Sketch также работает, поэтому 16 бит на канал не кажутся жестким требованием.