Что такое параллакс значков

Как получить эффект параллакса iOS на любом устройстве Android

Одна из самых примечательных характеристик Apple — безупречное внимание к деталям. От оборудования до программного обеспечения — устройства Apple всегда воплощают чувство элегантности.

Дело в перспективе | Shutterstock

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

Что это такое?

Параллакс означает очевидную разницу в положении в зависимости от угла обзора. В iOS эффект параллакса заставляет значки оставаться неподвижными, а фон перемещается в зависимости от направления, в котором перемещается устройство. Это создает ощущение глубины и создает впечатляющие визуальные эффекты.

Разве не было бы замечательно, если бы такого эффекта можно было добиться на Android? К счастью, может. Следующие ниже приложения для обоев позволят пользователям Android пользоваться этой очень интересной функцией iOS.

1. Галактика Параллакс Живые Обои

Галактика Параллакс Живые Обои это приложение для обоев, которое предлагает пользователям обои на галактическую тематику, которые можно настроить в соответствии с пользовательским контентом.

В настройках обоев изменение FPS (кадров в секунду) изменяет скорость, с которой обои параллакса адаптируются к изменению угла наклона вашего устройства Android.

Цвет звездного фона тоже можно изменить.

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

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

Также можно регулировать количество, размер и скорость пульсации света от звезд на заднем плане.

В целом, это отличные обои, но то, что заставляет их сиять, — это настройка.

2. Параллакс 3D живые обои

Параллакс 3D живые обои — это приложение для обоев, созданное тем же разработчиком, что и Galaxy Parallax Live Wallpaper под названием Васаби.

Почти все настройки, которые можно редактировать, идентичны настройкам Galaxy Parallax Live Wallpaper. Единственное исключение — это возможность загрузить пользовательскую фотографию, к которой можно применить эффект параллакса. Это отличает его от других подобных приложений, включая Galaxy Parallax Live Wallpaper. В Настройки просто выберите Пользовательское фото, а также Загрузить фото. Загрузите фотографию из своей коллекции, которую хотите использовать, а затем установите ее.

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

Вывод

Эти два приложения от Wasabi позволяют пользователям настраивать фоны с эффектом параллакса с помощью живых обоев Parallax 3D Live, даже предоставляя возможность загружать собственные фотографии.

Эффект параллакса создает иллюзию глубины и в целом придает пользовательскому интерфейсу вид повышенного качества и ощущение завершенности.

Эти два приложения заслуживают внимания, но, пожалуйста, дайте нам знать, есть ли у вас какие-либо другие предложения для этого типа приложений или какие-либо общие отзывы в комментариях ниже.

Источник

Как отключить эффект параллакса в iOS, чтобы уменьшить движение на вашем iPhone

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

Еще в 2013 году Apple выпустила iOS 7, полный пересмотр системы iOS. С помощью программного обеспечения Apple включила новые анимации, такие как эффект параллакса — это движение создает иллюзию, что домашний экран является многослойным, с приложениями и фоновыми обоями, каждый в своих отдельных плоскостях. Наклон устройства поворачивает к жизни функцию, используя гироскоп iPhone и акселерометр, чтобы изменить ориентацию определенных плоскостей.

Но достаточно истории. Вы хотите, чтобы эта функция исчезла. Что ж, для этого есть пара маршрутов:

Способ 1: включить «Уменьшить движение»

Если вы хотите полностью устранить эффект параллакса, не смотрите дальше, чем «Уменьшите движение». Этот параметр гарантирует, что ваши обои останутся абсолютно неподвижными, будь то на домашнем экране или экране блокировки. Чтобы получить доступ к этой опции, выберите «Общие»> «Специальные возможности»> «Уменьшить движение» в настройках, а затем убедитесь, что переключатель рядом с «Уменьшить движение» включен. Вы также можете выбрать, будут ли эффекты автоматически воспроизводиться в сообщениях или воспроизводить их вручную.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значковЧто такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значковЧто такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Однако есть большое предостережение по уменьшению движения. В то время как эффект параллакса — история, также как и другие анимации. Открытие приложений, выход из приложений, доступ к переключателю приложений — все это выполняется без анимации. Это особенно дезориентирует на iPhone X, XS, XS Max и XR, поскольку жесты смахивания кажутся странными без анимации, управляющей вашим движением.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значковЧто такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков
Уменьшить движение вкл. (Слева) и выключить (справа)

Если вы не хотите жертвовать так много, просто чтобы получить эффект параллакса, есть еще один вариант:

Способ 2: установите обои на «неподвижно»

При выборе обоев для домашнего экрана и экрана блокировки вы можете выбрать один из трех вариантов: «Все еще», «Перспектива» или, если изображение представляет собой «Живое фото», «Живое фото». По умолчанию iOS выбирает «Перспектива», которая, по сути, является эффектом параллакса.

Избегайте этой опции. Вместо этого выберите «Все еще». Когда вы это сделаете, обои останутся статичными на вашем домашнем экране и экране блокировки. Подвох? Значки на главном экране все еще движутся, но едва. Если вы не смотрите, вы не заметите.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значковЧто такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значковЧто такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков
«Все еще» (в середине) против «перспективы» (справа)

Как насчет выбора «Оба» для Live Photos, где нет опции «Все еще» на домашнем экране? Просто. На первой странице настроек обоев просто коснитесь окна домашнего экрана. Там вы можете убедиться, что для обоев установлено значение «Стоп», не влияя на эффект Live Photo на экране блокировки.

Источник

Эксперты выяснили, как работает параллакс-эффект в iOS 7

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

В Apple так описывают эту технологию:

«iOS 7 создает ощущение многомерности. Операционная система по максимуму использует технологии iPhone, iPad и iPod touch, чтобы ещё больше расширить возможности iOS. Чёткие и функциональные слои создают глубину и упорядочивают контент.

Полупрозрачный фон даёт ощущение связи с контекстом и местом. А новый подход к анимации и движению делает самые простые задачи намного более увлекательными».

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

Параллакс и перспектива

Принцип действия параллакс-эффекта основан на том, как мозг определяет размеры объекта, находящегося в поле зрения человека. Чем ближе предмет, тем больше он кажется. И наоборот, чем дальше от нас объект, тем меньше он по размеру.

Это базовое описание принципа восприятия мозгом перспективы, а параллакс является изменением видимого положения объекта относительно удалённого фона в зависимости от положения наблюдателя. Например, когда вы находитесь внутри быстро мчащегося автомобиля или поезда, объекты, находящиеся ближе к вам, движутся быстрее, в то время, как объекты находящиеся дальше – медленнее. Хотя на самом деле скорость у них одинаковая.

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

От ракет к телефонам

В iOS параллакс-эффект воспроизводится программным обеспечением, а конкретно – технологией, которая изначально проектировалась для космонавтики.

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

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

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

Математика, реализующая эффект глубины, достаточно проста. Всё, что необходимо сделать программному обеспечению – уметь организовать содержимое дисплея в разных плоскостях, а затем перемещать эти плоскости относительно друг друга. Перемещать, основываясь на их положении относительно глаз пользователя. Всё это в результате создает эффект глубины.

Если вы видели запись конференции WWDC 2013, то могли заметить, что иконки в iOS 7 выглядят так, словно они находятся высоко над фоновыми обоями. И это смотрится очень реалистично. То же самое касается и вкладок в Safari.

Несмотря на то, что все особенности iOS 7 еще скрыты от публики, вполне вероятно, что Apple внедрит параллакс-эффект во все составляющие новой ОС (этим же можно объяснить, почему в первое поколение iPad и iPhone 3GS, не имеющие гироскопов, не попали в список поддерживаемых устройств).

Как работает параллакс в iOS 7:

Источник

Как получить эффект параллакса на любом устройстве Android 2021

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

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

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

Что это?

Параллакс относится к очевидной разнице в положении в зависимости от угла обзора. В iOS эффект параллакса заставляет значки оставаться неподвижными, в то время как фон перемещается в зависимости от направления, в котором перемещается устройство. Это создает ощущение глубины и создает впечатляющие визуальные эффекты.

Не было бы замечательно, если бы этот эффект мог быть достигнут на Android? К счастью, это возможно. Следующие приложения для обоев, приведенные ниже, позволят пользователям Android наслаждаться этой очень крутой функцией iOS.

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

1. Галактика Параллакс Живые Обои

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

В настройках обоев изменение FPS (кадров в секунду) меняет скорость, с которой обои параллакса адаптируются к изменению угла на вашем устройстве Android.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Цвет звездного фона также можно изменить.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

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

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Выбор параметра « Прокрутка» означает, что при изменении начального экрана часть отображаемых обоев также будет изменена.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Количество, размер и скорость пульсации света от звезд на заднем плане также можно регулировать.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

В целом, это отличные обои, но то, что заставляет их сиять, это настройка.

2. Параллакс 3D Живые Обои

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Это отличная функция, которая позволяет пользователям полностью использовать потенциал параллакса на своих устройствах Android.

Заключение

Эти два приложения от Wasabi позволяют пользователям настраивать фоны с эффектом параллакса с помощью обоев Parallax 3D Live, даже предоставляя возможность загружать собственные фотографии.

Эффект параллакса создает иллюзию глубины и в целом дает пользовательскому интерфейсу вид улучшенного качества и ощущение законченности.

Эти два приложения стоит попробовать, но, пожалуйста, дайте нам знать, если у вас есть какие-либо другие предложения для этого типа приложений или какие-либо общие отзывы в комментариях ниже.

Как получить максимум от siri на iphone (или на любом устройстве ios)

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Подробно рассмотрим Siri, что он может сделать и как максимально эффективно использовать его на устройствах iPhone или iPad / iOS. Проверьте это!

Как получить операцию одной рукой на любом устройстве Android

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Вот как получить одноручное управление на любом устройстве Android, а не только на больших фаблетах.

Как получить Windows-подобную корзину на любом устройстве Android

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Случайно удалил файл с телефона Android, а затем проклял себя? Почему бы вам не получить Windows-подобную корзину вместо? Продолжайте читать, чтобы знать как.

Источник

Эффект параллакса в iOS приложениях

This post is also available in: Английский

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Идея использования параллакса в дизайне мобильных приложений не нова. Как и многие другие, она пришла к нам из мира веб-дизайна, где поначалу стала очень распространённым направлением. Параллакс придаёт дизайну впечатляющий эффект глубины и кажущийся объём. К настоящему моменту в силу некоторых неудобств, связанных со спецификой разработки веб-приложений, мода на параллакс в оформлении сайтов поутихла. Однако мобильные приложения — это совсем другой разговор. Параллакс в мобильном дизайне живёт и пока не собирается никуда уходить, и даже добавлен по-умолчанию в дизайн новой iOS 7!

В этой статье мы расскажем вам о нашем компоненте DVParallaxView, и продемонстрируем на примере его устройства, как добавить в приложение точно такой же эффект параллакса, как и в home screen в iOS 7. И даже лучше.

Как устроен параллакс?

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

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

Итак, как работает параллакс? Суть его довольно проста. Параллакс — это изменение положения одного и того же объекта, наблюдаемого с двух разных точек в пространстве. Понаблюдать этот эффект в реальном мире можно в любой момент. Всё, что вам понадобится — это нечто большое на роль фона (например, стена дома) и некий наблюдаемый на этом фоне объект, стоящий к вам ближе, чем фон (например фонарный столб или дерево). Если вы будете идти вдоль стены, наблюдая при этом за фонарным столбом, то вам будет казаться, что фонарный столб смещается относительно стены. Такой эффект и называется параллаксом — кажущееся смещение столба относительно стены при перемещении точки наблюдения, то есть вас. При этом чем ближе к вам будет столб, тем выше будет казаться скорость его смещения. И наоборот, если вы отойдёте от столба на значительное расстояние и попробуете пройтись вдоль стены дома опять — столб практически не будет смещаться относительно стены. Наши глаза приучены оценивать расстояние до объектов по многим признакам, и один из них — это относительная скорость смещения объекта. Если вы наблюдаете сцену, в которой объекты при вашем движении смещаются с разной скоростью — ваши глаза сразу говорят вашему мозгу, что объекты находятся на разном расстоянии от вас. В этом и заключается привлекательность использования эффекта параллакса в дизайне — сымитировав его, вы придадите плоской сцене глубину.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Итак, в практическом смысле для нас эффект параллакса заключается в том, что объекты удалённые от вас на разное расстояние смещаются относительно вас с разной скоростью. Причём эта скорость находится в обратной зависимости от вашего расстояния до объектов. Если вы близко — скорость объекта велика, если далеко — наоборот.

Давайте выделим основные составляющие этого эффекта. Во-первых, для ярко выраженного параллакса желательно иметь фон, в идеале неподвижный, или смещение которого по сравнению с остальными объектами будет пренебрежимо мало. Во-вторых, наблюдать параллакс можно только при наличии объектов, наполняющих пространство между фоном и точкой наблюдения. А самое главное в этих объектах — разность их удалённости от вас. Иными словами объекты должны составлять своеобразную иерархию, выстраиваясь на разном расстоянии от точки обзора до фона. И, наконец, в-третьих, параллакс невозможен без движения объектов относительно точки наблюдения с разной скоростью.

При наличии всех трёх основных моментов — фона, объектов и относительного движения — мы будем наблюдать параллакс.

Parallax scrolling

Теперь, когда мы знаем, как устроен параллакс, нам нужно определиться, как именно мы будем воплощать его в коде.

Самым очевидным подходом к реализации параллакса является parallax scrolling. Играли в старенькие игры-платформеры? Если да — то скорее всего сможете вспомнить, что пока персонаж бежал из левого конца уровня в правый, объекты на заднем плане смещались в обратном направлении с разной скоростью в зависимости от предполагаемой дальности от переднего плана. Вот ссылка на википедию, чтобы вы точно вспомнили, о чём идёт речь.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Parallax scrolling в играх был устроен таким образом, что сцена, которую вы наблюдаете на экране, состоит из нескольких слоёв, на которых расположены объекты. В зависимости от предполагаемого расстояния слоя от экрана (слой «лес» ближе к вам, чем слой «облака», которые ближе к вам, чем слой «солнце») слои смещаются с той или иной скоростью. Это придаёт происходящему на экране определённую глубину, заставляя плоскую картинку выглядеть объёмнее. Нельзя не признать — такой подход довольно хорошо соотносится с тем, что мы узнали о параллаксе. Действительно, можно мысленно разбить пространство между вами и фоном на слои, содержащие объекты, находящиеся в этом пространстве.

Логично предположить, что реализация эффекта параллакса должна быть инкапсулирована в некий компонент-контейнер, вмещающий в себя другие компоненты и имеющий некую иерархию видов, положение которых будет смещаться на расстояние, зависимое от положения в иерархии. Давайте задумаемся, а нет ли элемента в UIKit, который уже содержит в себе подобную возможность? Конечно есть! Любой UIView содержит в себе иерархию других UIView, помещённых в него методом addSubview:.

Здесь мы подходим к основной идее, положенной в основу нашего компонента DVParallaxView. Идея заключается в том, чтобы компонент был потомком UIView, инкапсулирующим в себе эффект параллакса. Сам эффект будет реализовываться передачей нового значения свойству contentOffset, имеющему тип CGPoint. Таким образом, DVParallaxView по своему смыслу является схожим с UIScrollView. При изменении значения contentOffset мы будем изменять расположение каждого view, находящегося в иерархии DVParallaxView. Величина смещения будет в обратной зависимости от удалённости элемента от «верха» иерархии. А так как элементы в массиве subviews хранятся начиная с самого нижнего в иерархии (то есть с самого дальнего от экрана), то смещение будет находиться в прямой зависимости от индекса обрабатываемого элемента при прямом проходе по массиву. Таким способом мы интерпретируем наличие «расстояния» между элементами, как в реальном мире. Для контроля величины расстояния мы выведем во внешний интерфейс свойство, представляющее собой множитель, на который будет умножаться индекс элемента в массиве. Задавая его, вы всегда сможете подстроить величину параллакса по своему желанию.

Ну что ж, предложенная модель выглядит жизнеспособной, все основные моменты продуманы. Здесь мы можем поставить точку в знакомстве с концептуальным устройством параллакса в DVParallaxView и начать рассказ о его практической реализации.

Создаём DVParallaxView

В этой и следующей главах мы подробно рассмотрим создание компонента DVParallaxView.

Перед тем, как приступить непосредственно к реализации, давайте определимся ещё с парой свойств класса DVParallaxView.

Во-первых, параллакс лучше всего выглядит и чаще всего делается на фоне какой-нибудь красивой картинки (помните, мы определились, что одной из обязательных составляющих параллакса является фон?). Поэтому в нашем классе необходимо предусмотреть возможность задать фоновое изображение. В самом корне иерархии видов всегда будет находиться приватный элемент класса UIImageView, который мы назовём backgroundImageView. Этот элемент будет исполнять роль фона в DVParallaxView. Его расположение в корне иерархии будет гарантировать нам самое малое относительное смещение, как и полагается фоновому, самому дальнему объекту сцены. Для передачи фонового изображения в публичном интерфейсе компонента будет специальное свойство — backgroundImage класса UIImage.

Во-вторых, эффект параллакса в iOS 7 складывается не только из смещения заднего фона. Если присмотреться получше, то можно заметить одну любопытную деталь: иконки смещаются в сторону, противоположную смещению фона. Сделано это для усиления эффекта параллакса и контраста между смещающимся фоном и иконками приложений, которые на первый взгляд неподвижны. Так как мы задались целью догнать и перегнать параллакс в iOS 7, то мы просто обязаны добавить такую возможность в наш компонент. Для этого мы заведём в публичном интерфейсе свойство frontView, в которое будем передавать тот вид, который мы хотим смещать в противоположную от параллакса сторону.

Итак, все приготовления сделаны — теория изучена, устройство компонента продумано. Можно приступать к созданию DVParallaxView. Готовы?

Создайте single-view проект в XCode, задайте ему имя и прочие необходимые атрибуты. Внутри проекта создайте класс DVParallaxView, который является потомком класса UIView. Создайте заголовочный файл DVParallaxView и заполните его следующим образом.

Все свойства класса, которые вы здесь видите, мы уже обсуждали выше, так что их набор не должен вас ничем удивить. Два свойства, которые не обсуждались ранее в явном виде — parallaxDistanceFactor и parallaxFrontFactor — это те самые множители, которые служат для контроля величины смещения соответственно элементов иерархии и фронтального вида.

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

Пусть объект класса создаётся вызовом метода initWithFrame:. В его вызове нужно выполнить всю начальную конфигурацию.

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

Если вы уже задавались вопросом «Как же мы будем инициировать смещение видов в компоненте?», то ответ на него вы уже можете увидеть в коде инициализатора — UIPanGestureRecognizer. Да, мы помним, что в iOS 7 параллакс вызывался наклоном телефона. Всему своё время.

В UIPanGestureRecognizer был передан селектор метода panHandler:. Давайте сразу напишем этот метод, чтобы не забыть сделать это потом.

Ничего необычного. Считываем перемещение касания, и такую же величину смещения задаём нашему DVParallaxView. Не забываем в конце обнулить полученное смещение.

Теперь самое интересное. Пока что по изменению contentOffset ничего не происходит, давайте это исправим. Создайте метод сеттера setContentOffset, как показано ниже.

Итак, разберёмся в методе поподробнее. Переменные backgroundReachedEdgeX и backgroundReachedEdgeY служат для сигнала о том, что смещая задний фон мы достигли края картинки. Если задний фон задан, то имеет смысл проверять, не вышли ли мы за пределы изображения backgroundImage. Ведь нам вовсе не хочется, чтобы пользователи созерцали «обрыв» изображения, это выглядит неестественно. Поэтому мы посчитали нужным ограничить область параллакса размерами изображения заднего фона, если оно имеется. Таким образом, блок //1 содержит в себе проверку на выход за пределы изображения.

Блок //2 — это проход по всем элементам иерархии видов с расчётом величин смещения их центров в зависимости от положения в иерархии. Также, если по осям X или Y мы находимся у края картинки заднего фона, то смещения по этим осям не произойдёт.

Основная логика смещения создана, осталось немного — задать методы доступа к основным свойствам, а также перегрузить метод addSubview.

Давайте по порядку. С геттером для backgroundImageView всё понятно — обыкновенное lazy instantiation, создаём объект только при надобности. При задании значений ParallaxDistanceFactor и ParallaxFrontFactor автоматически выполнится проверка на отрицательные значения. Сеттер для backgroundImage задаёт изображение заднего фона в backgroundImageView и одновременно центрирует его положение на экране. Сеттер frontView одновременно добавляет frontView в иерархию подвидов, таким образом нет смысла добавлять его вручную. Наконец, перегруженный метод addSubview: работает в обычном режиме, если в DVParallaxView не определён frontView, но если он определён, то любой вид будет на позицию ниже него в иерархии. Ведь подразумевается, что frontView всегда впереди.

Пока что остановимся на этом и переключимся на главный viewController нашего тестового проекта. Настало время подключить наш новый компонент и проверить его в деле. Так как мы хотим быть похожими на новый home screen в iOS 7, то в тестовом проекте мы попытаемся воссоздать именно его. Для этого нам нужны картинка заднего фона (желательно с изображением космоса) и иконки приложений. Более того, так как наш компонент поддерживает и другие объекты между фоном и передним планом, то мы добавим их тоже. Раз фоном является космос, то мы разовьём космическую тему и немного оживим пустынное космическое пространство планетой Земля и её спутником — Луной. Все необходимые изображения вы можете найти в интернете или забрать из нашего тестового проекта на github.

В iOS 7 иконки приложений являются передним планом, поэтому в DVParallaxView мы должны разместить их в frontView. Для этого мы создадим UIView, в который поместим все иконки. Чтобы не заниматься вручную созданием и размещением всех этих компонент, создайте контейнер и иконки в storyboard’е, затем подключив их к контроллеру.

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Вот так выглядит фронтальный вид в нашем тестовом приложении. Привяжите UIView-контейнер как IBOutlet к контроллеру и назовите его frontView. Давайте приступим к созданию экземпляра DVParallaxView.

Создайте свойство parallaxView в приватном интерфейсе вашего контроллера. Для этого свойства создайте геттер.

В коде видно, как после создания экземпляра класса DVParallaxView ему задаётся фон «galaxy2», затем в иерархию видов добавляются изображения Земли и Луны. Затем в качестве переднего плана задаётся свойство frontView. Теперь всё, что нам остаётся, это добавить наш компонент в иерархию видов контроллера. Добавьте эту строку в метод viewDidLoad:

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

Что такое параллакс значков. Смотреть фото Что такое параллакс значков. Смотреть картинку Что такое параллакс значков. Картинка про Что такое параллакс значков. Фото Что такое параллакс значков

Осталась только одна деталь. Пока что смещение элементов выполняется касаниями. Пора это поправить. Пришло время подключить к DVParallaxView гироскоп.

Подключаем Core Motion

Если вы читали нашу статью «Осваиваем Core Motion в iOS», то уже имеете все необходимые навыки для использования гироскопа в этом проекте, а также знаете, что для подключения гироскопа необходимо добавить к проекту фреймворк Core Motion. Но как именно мы будем использовать данные с датчика? В нашем проекте мы выбрали rotationRate для индикации наклонов телефона. То есть contentOffset будет изменяться при наличии ненулевой угловой скорости поворота.

Подключите фреймворк к файлу реализации класса DVParallaxView.

Затем создайте свойства motionManager и displayLink в приватном интерфейсе класса.

@property (nonatomic, strong) CMMotionManager *motionManager;

@property (nonatomic, strong) CADisplayLink *displayLink;

CMMotionManager — это основной класс CoreMotion, используемый для доступа к данным с датчиков. CADisplayLink — таймер, работающий с частотой обновления экрана, который будет вызывать метод обновления данных с гироскопа.

Теперь добавим методы доступа для новых свойств.

Очевидно, что разработчику, использующему компонент DVParallaxView, совсем необязательно всегда понадобится использовать гироскоп. Возможно, будут и иные условия и действия для изменения значения contentOffset. Поэтому компонент должен предоставлять возможность выбора, нужно ли управлять параллаксом через гироскоп. Для предоставления этого выбора мы выведем в публичный интерфейс свойство gyroscopeControl, которое будет иметь тип BOOL. Если оно установлено в YES, компонент начинает считывать показания с гироскопа и смещать элементы иерархии при наклоне устройства. Если оно установлено в NO, то компонент прекращает реагировать на изменения угловой скорости устройства. При этом свойства motionManager и displayLink должны прекращать свою деятельность, чтобы не отнимать впустую ресурсы процессора.

Как мы и условились, создайте в публичном интерфейсе свойство gyroscopeControl.

@property (nonatomic, strong) BOOL gyroscopeControl;

Затем создайте для него сеттер.

Отметьте, что при установке свойства в YES motionManager начинает получать показания с deviceMotion, а не с gyroscope. Причины такого выбора подробно описаны в статье «Осваиваем Core Motion в iOS». При установке его в NO, получение данных останавливается, displayLink удаляется со всех потоков вызовом метода invalidate, а сам motionManager устанавливается в nil.

Теперь нам осталось только написать метод преобразования данных с гироскопа в данные для contentOffset, а также реализовать метод displayLinkHandler, который вызывается в таймере displayLink.

Не забудьте в самом начале файла реализации описать две define-константы, которые мы использовали в работе метода преобразования.

#define DV_ROTATION_THRESHOLD 0.1f

#define DV_ROTATION_MULTIPLIER 2.5f

В классе контроллера при создании объекта DVParallaxView задайте его свойство gyroscopeControl в YES.

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

Заключение

Если вы читаете этот абзац, значит вы только что создали отдельный компонент с эффектом параллакса, как в iOS 7. И даже более — эффект в компоненте DVParallaxView получился более полным, так как сдвигает не только фон и передний план, но и всю иерархию элементов между ними. Как видите, его устройство оказалось совсем не сложным.

DVParallaxView был создан нами для свободного пользования и выложен в нашем репозитории. Пользуйтесь, улучшайте, мы будем рады вашим предложениям!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *