Как создать эффект анимации «Добавить в список чтения» - PullRequest
1 голос
/ 27 октября 2011

Я пытаюсь сделать эффект анимации похожим на эффект в Safari (iPhone), когда вы добавляете элемент в список чтения.Он похож на тот, который появляется при запуске загрузки элемента из приложения App Store: элемент приложения падает на док-станцию, чтобы начать загрузку.Сначала он подпрыгивает, а затем идет в док.Это очень хороший эффект, который Apple использует в своих ОС.

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

Если естьКто-то, кто сделал это или знает, как называется эффект, может подсказать, как это сделать.

Спасибо.

1 Ответ

0 голосов
/ 18 мая 2012

"Добавить в список чтения" не показывает анимацию на моем телефоне, но по вашему описанию это звучит как анимация "Открыть в фоновом режиме" в Safari (iPhone). Мой ответ описывает эту анимацию.


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


Получение контента для анимации

Если вы решите анимировать вид, отображаемый на экране, до (в вашем случае) панели инструментов, то вам потребуется только доступ к ее слою. Если вы хотите, чтобы исходный вид оставался и анимировал визуальную копию (например, анимацию «открыть в фоновом режиме» -Safari) до элемента панели, тогда вам следует создать новый слой и нарисовать содержимое вашего слоя в изображение. и установите это изображение в качестве содержимого слоя, который вы анимируете

Расчет конечной позиции

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

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

Анимация по дорожке

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

Встряхивание штанги

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

... соберите все это вместе и настройте под свои особые потребности, и у вас будет анимация, напоминающая анимацию, которую вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...