Вопрос по animation, core-animation, ios – Как добиться эффекта «стереть часы» / радиального вытирания в iOS?

7

Иногда вы увидите анимацию «стереть часы». Что-то вроде этого:

Как бы вы достигли этого эффекта в iOS?

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

@ 2Dee, яне должен должны оправдать, но многие люди отвергают вопросы по глупым причинам. Лучше объяснить, почему я задаю вопрос, чем рисковать путаницей. Duncan C
Я проголосовал за этот вопрос и его ответ, спасибо, что поделились этим. Вы не должны оправдывать ответ на свой вопрос, это действительно рекомендуется в разделе справки:stackoverflow.com/help/self-answer 2Dee

Ваш Ответ

1   ответ
12

Вы создадите CAShapeLayer и установите его в качестве маски на слое вашего представления.

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

Наконец, вы должны создать CABasicAnimation, которая анимирует свойство strokeEnd слоя формы от 0 до 1.0. Это может привести к тому, что фигура станет пустой (изображение полностью замаскировано) и анимирует маску в виде «кусочка пирога», который становился все больше и больше до тех пор, пока не получился полный размер изображения.

Вы можете загрузить пример проекта на github, который я написал и который показывает рабочий код для этой анимации, среди других методов Core Animation:

CA Animation демо на GitHub

Привет, Дункан, спасибо за это. Извините, я не совсем понял, я взял фреймворк и применил его к другому приложению для iPhone. Очевидно, что проблема в портировании на фреймворк, но я изо всех сил пытаюсь найти его ... Я разместил здесь вопрос ...stackoverflow.com/questions/22773951/... # обратите внимание, что я тоже немного урезал исходные рамки, это может быть причиной проблем ... хм. Спасибо за ваше время Дункан Taylor Abernethy Newman
@mVJ, вы можете сделать это с помощью OpenGL. Я ничего не знаю об анимации на Android. Вы можете сначала выполнить поиск в Google, а если ничего не найдете, опубликуйте новый вопрос с тегом Android и дайте ссылку на этот вопрос, чтобы объяснить, что вам нужно. Duncan C
Эй, Дункан, ты знал, что анимация маски не работает на 64-битной? Есть идеи? eric
@TaylorAbernethyNewman, проект создает приложение только для iPad. Это просто потому, что я хотел экранную недвижимость для различных анимаций, которые он делает. Однако было бы тривиально заставить его работать на iPhone. Вам просто нужно изменить целевое устройство и создать версии файла XIB для iPhone и iPad. Duncan C

Похожие вопросы