Как настроить айфон чтобы была анимация

Анимация объектов в приложении Keynote на iPhone, iPad, iPod touch и компьютере Mac

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

iPhone или iPad

Анимация объектов в приложении Keynote для iPhone и iPad

Выделяйте объекты или тексты с помощью анимации или создавайте траектории для движения объекта или текста по слайду.

Анимация объекта

  1. Выберите объект, который нужно анимировать, а затем в открывшемся меню нажмите «Анимация».
  2. Нажмите «Добавить действие» и выберите вариант анимации.
  3. Нажмите «Готово» в правом верхнем углу. Настраивать анимацию можно в любое время.

Создание траектории

Нарисуйте траекторию движения пальцем или с помощью Apple Pencil на поддерживаемом устройстве.

  1. Выберите объект, который нужно анимировать, а затем в открывшемся меню нажмите «Анимация».
  2. Нажмите «Добавить действие» и выберите «Создать траекторию».
  3. Перетащите объект по слайду, чтобы создать траекторию его движения. По умолчанию траектория представляет собой кривую линию . Чтобы создать траекторию в виде прямых линий, нажмите кнопку «Прямая линия» . Чтобы нарисовать новую траекторию, нажмите «Очистить» и нарисуйте траекторию повторно.
  4. После создания траектории нажмите «Готово» в нижней части страницы, а затем нажмите «Готово» в правом верхнем углу. Траекторию можно редактировать в любой момент.

Редактирование траектории

  1. Выберите объект, а затем в открывшемся меню нажмите «Анимация».
  2. Нажмите «Траектория» и выполните любое из следующих действий.
    • Чтобы изменить начало или конец траектории, перетащите непрозрачный объект в точку, откуда траектория должна начинаться, или перетащите прозрачный объект в точку, где траектория должна заканчиваться.
    • Для того чтобы переместить отдельные точки траектории, нажмите на нее, а затем перетащите любую красную или белую точку.
    • Чтобы нарисовать новую траекторию, нажмите на объект, выберите «Нарисовать новую траекторию» в появившемся меню, а затем перетащите объект по слайду для создания траектории движения.
    • Чтобы удалить точку, нажмите на траекторию, нажмите на точку и выберите в появившемся меню «Удалить точку».
    • Чтобы сделать траекторию в определенной точке изогнутой или прямой, нажмите на белую или красную точку, а затем выберите «Сделать острой вершиной» или «Сделать округлой вершиной».
    • Чтобы разделить траекторию на отдельные анимации, нажмите на траекторию, выберите точку, в которой необходимо разделить траекторию, и нажмите «Разделить траекторию».
    • Чтобы объект поворачивался в соответствии с кривой траектории при ее движении, включите функцию «Выровнять по траектории». При включенной функции «Выровнять по траектории» вы также можете использовать ползунок «Поворот», чтобы настроить начальное выравнивание объекта по траектории движения.
  3. По завершении редактирования траектории нажмите «Готово» в верхнем правом углу.

Настройка анимации

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

  1. Выберите объект, а затем в открывшемся меню нажмите «Анимация».
  2. Нажмите «Действие», выберите анимацию, которую вы хотите настроить, и внесите необходимые изменения. Для предварительного просмотра анимации нажмите кнопку «Воспроизвести» .
  3. После настройки анимации нажмите «Готово» в верхнем правом углу.

Последовательность и удаление анимаций

Чтобы изменить время воспроизведения анимации, настройте порядок анимации.

  1. Нажмите кнопку «Еще» , а затем нажмите «Анимация».
  2. Нажмите кнопку «Порядок анимации» в правом верхнем углу и внесите изменения.
    • Чтобы изменить порядок анимаций, нажмите и удерживайте анимацию, затем перетащите ее в новое место.
    • Чтобы изменить момент начала анимации, нажмите на анимацию, затем воспользуйтесь параметрами «Старт» и «Задержка».
    • Чтобы удалить анимацию, смахните ее влево и нажмите «Удалить».
  3. Нажмите «Готово» в правом верхнем углу.

Анимация объектов в приложении Keynote для Mac

Выделяйте объекты или тексты с помощью анимации или создавайте траектории для движения объекта или текста по слайду.

Анимация объекта

  1. Выберите объект, который требуется анимировать.
  2. Нажмите кнопку «Анимация» в верхнем правом углу и выберите вкладку «Действие».
  3. Нажмите «Добавить эффект» и выберите эффект. Настраивать анимацию можно в любое время.

Создание траектории

  1. Выберите объект, который требуется анимировать.
  2. Нажмите кнопку «Анимация» в верхнем правом углу и выберите вкладку «Действие».
  3. Нажмите «Добавить эффект» и выберите «Переместить».
  4. Перетащите непрозрачный объект в область, откуда перемещение должно начинаться, затем перетащите прозрачный объект в область, где перемещение должно заканчиваться. Чтобы сделать траекторию криволинейной, перемещайте белые точки, расположенные на линии. Траекторию можно редактировать в любой момент.

Редактирование траектории

  1. Выберите объект.
  2. Нажмите на появившийся под объектом красный ромб и выполните любое из следующих действий.
    • Чтобы изменить траекторию анимации, перетащите непрозрачный или прозрачный объекты в другую область слайда либо перетащите любую красную или белую точку.
    • Чтобы изменить изгибы или углы траектории, нажмите на любой точке траектории, удерживая клавишу Control, и выберите «Сделать острой вершиной», «Сделать округлой вершиной» или «Сделать вершиной Безье».
    • Чтобы удалить точку траектории, нажмите на ней, удерживая клавишу Control, и нажмите «Удалить»
    • Чтобы изменить другие настройки, например синхронизацию по времени и ускорение, воспользуйтесь параметрами на вкладке «Действие».

Чтобы объект поворачивался в соответствии с кривой траектории при ее движении, нажмите «Выровнять по траектории» на вкладке «Действие».

Настройка анимации

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

  1. Выберите объект.
  2. Нажмите кнопку «Анимация» в верхнем правом углу и выберите вкладку «Действие».
  3. Чтобы изменить длительность анимации и другие настройки, воспользуйтесь параметрами на вкладке «Действие».

Последовательность и удаление анимаций

Чтобы изменить время и последовательность воспроизведения анимации, необходимо настроить порядок анимации.

  1. Нажмите кнопку «Анимация» в правом верхнем углу.
  2. Нажмите кнопку «Порядок анимации» в правом нижнем углу, чтобы открыть окно «Порядок анимации». Затем внесите необходимые изменения.
    • Чтобы изменить порядок анимаций, перетащите анимацию в новое место.
    • Чтобы изменить момент воспроизведения анимации, выберите анимацию, затем воспользуйтесь параметрами «Старт» и «Задержка».
    • Чтобы удалить анимацию, выделите ее и нажмите клавишу Delete.
  3. Нажмите кнопку «Закрыть» .

Источник

Как изменить анимацию зарядки в iOS 14

Один из самых раритетных элементов в iOS – это индикатор зарядки смартфона. С момента появления первого iPhone он лишь слегка менялся, подстраиваясь под текущую стилистику оформления системы.

В iOS 14 появилась возможность заменить данный индикатор на кастомную анимацию или индикатор уровня заряда из других ОС.

📌 Спасибо re:Store за полезную информацию. 👌

Как установить новую анимацию зарядки на iPhone

1. Скачиваем бесплатное приложение Быстрые команды из App Store.

2. Загружаем любое приложение с разными анимациями зарядки. Нашел в App Store такие варианты: Charging Show, Charging Play и Charging Play +.

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

3. После этого создаем простую автоматизацию в приложении Быстрые команды. В качестве события выбираем Зарядное устройство – Подключается, а в качестве действия – запуск одного из указанных выше приложений.

4. На последнем шаге отключаем переключатель “Спрашивать до запуска” и сохраняем автоматизацию.

5. Отключаем уведомления о срабатывании автоматизации по нашей инструкции.

Теперь при подключении iPhone к любому источнику питания увидите нестандартную анимацию заряда и услышите настроенный звук. Сработает фишка, если гаджет будет разблокирован (как с рабочего стола, так и с экрана блокировки после срабатывания Face ID).

Обратите внимание, что фактически смартфон снимает блокировку и запускает приложение. Утилита Charging Play, например, сама закроется через несколько секунд после запуска, а iPhone заблокируется через установленный в настройках промежуток времени.

Источник

Как установить видео или гифку на экран блокировки iPhone

Фишка Live-фото появилась в iPhone 6s вместе с системой распознавания силы нажатия 3D Touch. Пару лет назад на смену 3D Touch пришел Haptic Touch, позволяющий использовать те же возможности, но на смартфонах без 3D Touch (iPhone XR/11/11 Pro).

Сами живые обои серьезно прокачали еще в iOS 11, появились разные анимации зацикливания и выбор ключевого кадра.

Именно такие “живые” обои мы и будем устанавливать в качестве фоновой картинки на экран блокировки iPhone.

? Спасибо re:Store за полезную информацию. ?

Где взять Live-фото для обоев

1. Можно снять свою картинку с движением. Для этого во время съемки фото активируйте переключатель Live в верхней части экрана.

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

2. При помощи бесплатного приложения intoLive можно сделать живые обои из любого видео или GIF-анимации на смартфоне.

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

3. В приложении TikTok есть встроенная возможность сохранить любое видео в качестве живых обоев.

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

Установить Live-фото проще простого: переходим в Настройки – Обои – Выбрать новые обои и указываем сохраненную анимацию. Не забываем включить использование живых обоев на экране блокировки (кнопка с кружком в нижней части экрана).

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

Источник

Разработка анимации на iOS — восемь примеров интерфейса с кодом Статьи редакции

Перевод материала дизайнера Натана Гиттера.

На WWDC 2018 дизайнеры Apple представили доклад под названием «Разработка текучих интерфейсов», в котором раскрыли детали жестового интерфейса IPhone X.

Это мой любимый доклад — очень рекомендую к просмотру.

В нём автор дал некоторые технические рекомендации, но то был псевдокод, в котором многое осталось непонятным.

Если вы попытаетесь реализовать эти идеи на практике, то обнаружите пропасть между идеей и тем, как её воплотить

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

Что будет в этой статье:

  • Краткое описание презентации «Проектирование текучих интерфейсов».
  • Восемь текучих интерфейсов, теория дизайна, на которой они строятся, и код для их создания.
  • Практические рекомендации для дизайнеров и разработчиков.

Текучий интерфейс также называют «быстрым» (fast), «гладким» (smooth) или «волшебным» (magical). Это опыт пользователя, когда он чувствует, что всё идёт как надо.

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

Они легко реагируют, в них можно прервать начатое действие и их можно перенацелить. Вот пример жеста «сдвинуть, чтобы вернуться на домашний экран» на IPhone X.

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

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

Ниже я покажу, как построить восемь интерфейсов, которые охватывают все основные темы презентации.

Это кнопка, которая подражает поведению кнопок в приложении калькулятора iOS.

  1. Выделяется цветом при нажатии.
  2. Её можно коснуться, когда приложение ещё открывается.
  3. Пользователь может нажать на кнопку и, не отрывая палец, увести иконку за границы кнопки, чтобы отменить нажатие.
  4. Он может увести кнопку за её границы, но, передумав, вернуть на место, подтвердив этим желание её нажать.

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

Первым шагом для создания этой кнопки будет использование подкласса UIControl, а не подкласса UIButton (UIButton работал бы хорошо, но, поскольку мы настраиваем взаимодействие, нам не нужны его функции).

Далее мы используем UIControlEvents, чтобы назначить функции различным сенсорным взаимодействиям:

Мы группируем события touchDown и touchDragEnter в одно «событие» под названием touchDown, и мы можем сгруппировать события touchUpInside, touchDragExit и touchCancel в одно событие touchUp.

(Все доступные UIControlEvents можно посмотреть здесь.)

Это даёт нам две функции для обращения с анимацией:

На touchDown мы отменяем существующую анимацию, если это необходимо, и сразу же устанавливаем цвет выделения (в этом примере установлен светло-серый).

На touchUp мы создаём новый аниматор и запускаем анимацию. Использование UIViewPropertyAnimator упрощает отмену анимации выделения.

(Обратите внимание: этот вариант не в точности повторяет поведение кнопок в приложении калькулятора iOS. В приложении можно коснуться одной кнопки, но активировать другую, если перетащить палец внутрь второй.)

Этот интерфейс показывает, как создать пружинную анимацию, указав «damping» (упругость) и «response» (скорость).

  • Интерфейс выглядит дружелюбно.
  • Нет определённого времени продолжительности анимации.
  • Действие легко прервать.

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

О чём нужно помнить при создании пружинных анимаций:

  1. Пружинные анимации не должны быть упругими. Используя значение 1 для damping, вы создадите анимацию, которая медленно и без проблем останавливается. Большинство анимаций должны использовать значение параметра damping 1.
  2. Не думайте о продолжительности анимации. Теоретически пружина никогда полностью не успокаивается, и установив продолжительность, вы можете сделать анимацию неестественной. Вместо этого поиграйте со значениями damping и response, пока не почувствуете, что анимация ведёт себя как надо.
  3. Прерывание имеет решающее значение. Поскольку пружинная анимация большую часть времени находится в состоянии, близком к «спокойному», пользователи могут подумать, что анимация завершилась, и попытаться снова взаимодействовать с ней.

В UIKit мы можем создать пружинную анимацию с помощью UIViewPropertyAnimator и объекта UISpringTimingParameters. К сожалению, нет инициализатора, который даёт просто выставить значения для damping и response. Ближе всего к идеалу инициализатор UISpringTimingParameters, который позволяет установить mass (массу), damping, stiffness (жёсткость) и initial velocity (начальную скорость).

UISpringTimingParameters (mass: CGFloat, stiffness: CGFloat, damping: CGFloat, initialVelocity: CGVector).

Нам нужно создать удобный инициализатор, который даст ввести значения для damping и response, сопоставляя их с требуемой массой (mass), жёсткостью (stiffness) и упругостью (damping).

Используя знания физики, мы можем вычислить нужные формулы.

Теперь мы можем создать собственные UISpringTimingParameters с нужными нам параметрами.

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

Хотите углубиться в тему? Тогда советую к прочтению великолепный материал Кристиана Шнорра “Demystifying UIKit Spring Animations”.

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

Ещё одна кнопка, но её поведение сильно отличается. Вот как ведёт себя кнопка фонарика на экране блокировки IPhone X:

  1. Для активации требует преднамеренного жеста 3D touch.
  2. Визуально намекает на необходимый жест.
  3. Тактильная обратная связь подтверждает активацию кнопки.

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

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

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

Чтобы измерить величину силы, прилагаемой к кнопке, мы можем использовать объект UITouch.

Мы прописали изменение размера кнопки в зависимости от приложенной силы, так что кнопка растёт с увеличением давления на экран.

Кнопка может быть нажата, но не активирована, так что нам нужно отслеживать её текущее состояние.

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

Для тактильной обратной связи мы используем генераторы обратной связи из UIKit.

Для пружинной анимации мы можем использовать UIViewPropertyAnimator с инициализаторами UISpringTimingParameters, которые мы создали ранее.

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

  1. Интерфейс остаётся отзывчивым, даже если действие невозможно выполнить.
  2. Несовпадение движения пальца и результата на экране говорит пользователю о достигнутой границе.
  3. Изображение сдвигается тем меньше, чем дальше от границы пользователь начал жест.

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

К счастью, реализовать его просто: offset = pow(offset, 0.7) .

Устанавливая значение экспоненты от 0 до 1, мы делаем так, чтобы страница смещалась тем меньше, чем дальше от границы пользователь начал сдвиг. Чем выше значение экспоненты, тем меньше будет смещение страницы, чем ниже, тем больше она сместится.

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

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

Чтобы открыть панель многозадачности на iPhone X, пользователь делает сдвиг снизу вверх, приостановив палец на середине.

  1. Момент паузы рассчитывается на основе быстроты совершения жеста.
  2. Более быстрая остановка приводит к более быстрому отклику.
  3. Нет таймеров.

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

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

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

Этот код обновляет массив скоростей (velocities), чтобы всегда иметь последние семь показателей, которые используются для вычисления ускорения.

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

Мы также проверяем, есть ли у движения минимальные смещение и скорость. Если жест потерял более 90% скорости, считается, что он приостановлен.

Мой вариант реализации не идеален. На моём тестировании он работает очень хорошо, но можно найти и лучший способ измерения ускорения.

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

  1. Нажатие на панель открывает её без эффекта упругости.
  2. Смахивание вверх открывает её с эффектом упругости.
  3. Интерактивно, прерываемо и обратимо.

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

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

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

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

Это также позволит пользователю нажать на панель во время её движения, чтобы остановить его (как при нажатии на экран, когда содержимое страницы прокручивается). Чтобы удостовериться, хотел ли пользователь своим нажатием остановить выплывание панели, мы можем проверить, были равна скорость нулю, когда жест заканчивается, и продолжить анимацию.

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

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

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

Есть и другие сложности, связанные с отменой анимации, на которых я не стал останавливаться в статье. Если вы хотите узнать больше по этой теме, прочитайте моё руководство “Building Better iOS App Animations”.

Повторное создание пользовательского интерфейса «картинка в картинке» (picture in picture — PiP) приложения iOS FaceTime.

  1. Лёгкое, почти воздушное взаимодействие.
  2. Прогнозируемая позиция основана на скорости замедления UIScrollView.
  3. Непрерывная анимация, которая учитывает начальную скорость жестов.

Наша конечная цель — написать что-то вроде этого.

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

Первым делом вычислим начальную скорость.

Для этого нам нужно рассчитать относительную скорость, основанную на текущей скорости, текущей позиции и расположении цели.

Мы можем разбить скорость на её X- и Y-компоненты и определить относительную скорость для каждого.

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

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

Мы можем использовать скорость замедления UIScrollView для расчёта конечной позиции. Это удобно, потому что такое решение связано с мышечной памятью пользователя, в которой остался процесс прокрутки. Если пользователь знает, как далеко прокручивается страница при определённой скорости жеста прокрутки, он может использовать это знание, чтобы интуитивно угадать, сколько силы необходимо приложить для перемещения PiP в нужное место.

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

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

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

Подводим итог: мы используем скорость замедления UIScrollView для прогнозирования движения PiP и вычисляем относительную скорость, чтобы передать всё это в UISpringTimingParameters.

Применение идей из создания интерфейса PiP к анимации вращения.

Источник

Читайте также:  Ремонт айфон замена тачскрина
Оцените статью