Запись в 29.11.2018

Почему ваше приложение в Sketch смотрится лучше, чем на устройстве и как это исправить

asvfedf 0 - комментарии
Дизайнерское агенство >> Без рубрики >> Почему ваше приложение в Sketch смотрится лучше, чем на устройстве и как это исправить

Изучение различий рендеринга в Sketch и iOS

Найдите различия

Можете ли вы определить различия между этими двумя изображениями?

Изучение различий рендеринга в Sketch и iOS

Если вы посмотрите достаточно внимательно, вы можете заметить несколько едва уловимых различий:

Изображение справа:

  1. Имеет большую тень.
  2. Имеет более темный градиент.
  3. Имеет слово «in» в первой строке абзаца.

Изображение слева — скриншот из Sketch, а изображение справа — это его воспроизведение на iOS. Эти различия возникают при рендеринге (визуализации) графики. Они имеют одинаковый шрифт, межстрочный интервал, радиус тени, цвета и атрибуты градиента — все константы идентичны.

Рендеринг графики на ios и Sketch

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

Почему нам не все равно

Дизайн имеет решающее значение для успешного мобильного приложения. Особенно в iOS пользователи привыкли к приложениям, которые хорошо работают и хорошо выглядят.

Если вы дизайнер или разработчик мобильных приложений, вы знаете, насколько мелкие детали важны для опыта конечных пользователей. Высококачественное программное обеспечение может поступать только от людей, которые глубоко заботятся о своем ремесле.

Существует много причин, по которым приложения могут выглядеть не так хорошо, как их оригинальные проекты. Мы рассмотрим одну из наименее заметных причин — различия в рендеринге между Sketch и iOS.

Отличия в рендере

Некоторые типы элементов интерфейса имеют заметные различия между Sketch и iOS. Мы рассмотрим следующие элементы: типографика, тени, градиенты.

1. Типографика

Типографика может быть реализована различными способами, но для этого примера я собираюсь использовать labels (элемент «Text» в Sketch, UILabel в iOS).

Давайте рассмотрим некоторые отличия:

Разный редеринг текста в Sketch и iOS

Самая большая разница в приведенном выше примере — это расположение разрывов строк. Третья группировка текста, начинающаяся с «This text is SF Semibold», обрывается в Sketch-файле после «25», но в приложении после слова «points». Эта же проблема возникает с абзацем текста — разрывы строк непоследовательны.

Другое небольшое различие заключается в том, что интерлиньяж (расстояние между строками абзаца) и трассировка (расстояние между символами) немного больше в Sketch.

Легче видеть эти различия, когда они непосредственно накладываются друг на друга:

Различие редера текста в Sketch и Xcode

Как насчет других шрифтов? Заменяя San Francisco на Lato (широко используемый бесплатный шрифт), мы получаем следующие результаты:

Заменяя San Francisco на Lato (широко используемый бесплатный шрифт), мы получаем следующие результаты

Намного лучше!

Есть все еще некоторые различия в интерлиньяже и трассировке, но они, как правило, небольшие. Однако будьте осторожны — если текст необходимо согласовать с другими элементами, такими как фоновые изображения, эти небольшие смещения могут быть заметны.

Как исправить

Некоторые из этих проблем связаны со шрифтом iOS по умолчанию — San Francisco. Когда iOS отображает системный шрифт, он автоматически включает трассировку на основе размера точки. Эта автоматически используемая таблица трассировки доступна на веб-сайте Apple. Существует плагин Sketch под названием «SF Font Fixer», который отражает эти значения в Sketch. Я очень рекомендую его, если ваш дизайн использует шрифт San Francisco.

(Примечание: всегда помните, нужно чтобы текстовое поле плотно обтекало текст в Sketch. Это можно сделать, выбрав текст и переключаясь между выравниванием «Fixed» и «Auto», а затем сбросив ширину текстового поля. Если есть дополнительное расстояние, это может легко привести к неправильным значениям, вводимым в макет).

2. Тени

В отличие от типографики, которая имеет универсальные правила размещения, тени менее четко определены.

Рендер теней в Sketch и iOS

Как мы видим на изображении выше, тени в iOS по умолчанию больше. В приведенных выше примерах это дает наибольшую разницу на верхних краях прямоугольников.

Тени сложны, потому что параметры в Sketch и iOS не совпадают. Самое большое различие заключается в том, что понятие «spread» на CALayer отсутствует, хотя это можно преодолеть, увеличив размер слоя, который содержит тень.

Как сделать тень в Xcode как в Sketch

Тени могут сильно различаться в Sketch и iOS. Я видел тени с одинаковыми параметрами, которые выглядят великолепно в Sketch, но почти невидимы при работе на реальном устройстве.

Различие теней в Sketch и iOS

Как исправить

Тени сложны и требуют ручной регулировки в соответствии с оригинальным дизайном. Зачастую радиус тени должен быть меньше, а непрозрачность должна быть выше.

// old

layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = 0.2
layer.shadowOffset = CGSize(width: 0, height: 4)
layer.shadowRadius = 10
// new
layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = 0.3
layer.shadowOffset = CGSize(width: 0, height: 6)
layer.shadowRadius = 7

Необходимые изменения варьируются в зависимости от размера, цвета и формы. Здесь нам нужно лишь несколько незначительных корректировок.

3. Градиенты

Градиенты оказывается также доставляют хлопоты.

Рендер градиентов в Sketch и iOS

Из трех градиентов различаются только «оранжевые» (верхние) и «синие» (внизу справа).

Оранжевый градиент выглядит более горизонтальным в Sketch, но более вертикальным в iOS. В результате общий цвет градиента темнее в конечном приложении, чем в дизайне.

Разница более заметна в синем градиенте — угол более вертикальный в iOS. Этот градиент определяется тремя цветами: голубым в левом нижнем углу, синим в середине и розовым в верхнем правом углу.

Пример рендера градиентов в Sketch и iOS

Как исправить

Может быть необходимо настроить начальную и конечную точки, если градиент находится под углом. Попробуйте частично компенсировать startPoint и startPoint вашего CAGradientLayer, чтобы учесть эти различия.

// old

layer.startPoint = CGPoint(x: 0, y: 1)
layer.endPoint = CGPoint(x: 1, y: 0)
// new
layer.startPoint = CGPoint(x: 0.2, y: 1)
layer.endPoint = CGPoint(x: 0.8, y: 0)

Здесь нет волшебной формулы * — значения нужно корректировать и проверять до тех пор, пока результаты не будут визуально совпадать.

*Jirka Třečák опубликовал отличную статью со ссылками, объясняющими, как работает рендер градиента. Прочтите, если вы хотите глубоко погрузиться в код!

Посмотрите сами

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

Это отличный способ повысить уровень информированности в вашей команде — просто передайте им свой телефон, и они смогут увидеть сами. Просто коснитесь экрана в любом месте, чтобы переключаться между изображениями (похожими на gif-файлы выше).

Скачайте демонстрационное приложение с открытым исходным кодом здесь: https://github.com/nathangitter/sketch-vs-ios

Sketch vs iOS демонстрационное приложение – Попробуйте сами!
Sketch vs iOS демонстрационное приложение — Попробуйте сами!

Выводы

Не думайте, что равные значения подразумевают равные результаты. Даже если числа совпадают, внешний вид может отличаться.

В конце концов, после того, как будет реализован какой-либо проект, нужно провести итерацию. Хорошее взаимодействие между дизайнерами и разработчиками имеет решающее значение для высококачественного конечного продукта.

Понравилась статья? Ставьте лайки и поделитесь ею с друзьями. Хотите оставаться в курсе последних разработок и дизайна мобильных приложений? Подписывайтесь на автора статьи в Twitter: https://twitter.com/nathangitter

Спасибо Rick Messer и David Okun за то, что просмотрели черновики этой статьи.

Связанная запись

Abstract – это Git для дизайнеров, который мы все ждали! ?

Итак, вы всегда хотели управление версиями ваших проектов в дружеской манере, на подобии Git. Больше не ждите, Abstract здесь!…

Фантастические стрелочные указатели для Sketch

Стрелки масштабируются, но углы не искажаютсяЭто урок по созданию масштабируемых динамических стрелочных указателей для UX схем. На пост я вдохновился шаблоном…

FontBuddy для Sketch — скажите «Нет» отсутствию нужных шрифтов

Получите бесплатные шрифты прямо в Sketch Экономьте несколько минут каждый раз, когда вы обнаруживаете, что отсутствует нужный…