Как анимировать ход и длину сегмента дуги/кольца

sketch

Мне нужно анимировать дуги (, также известные как сегменты пончиков )в следующих сценариях, где дуга поддерживает постоянный радиус r до центра воображаемой окружности (, дуга находится прямо за пределами окружности ).

1 )Анимируйте ширину штриха дуги от x до y, сохраняя при этом радиус r и угол альфа.

2 )Анимируйте угол дуги от альфа до бета, сохраняя при этом постоянную ширину и радиус штриха.

3 )делайте 1 и 2 вместе, но, возможно, с независимыми анимациями/таймингами.

Вот что у меня есть:

Я реализовал рисование дуги как пользовательское представление, которое просто рисует дугу с помощью CGContextAddArc. Это нормально для статической дуги, но ничего не анимирует.

Кроме того, я знаю, как рисовать обрезанные изображения с помощью таких вещей, как [UIBezierPath addClip].

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

Теперь, как мне взять все эти концепции и прибить их к какому-то реальному коду рисования? Мне не нужен реальный код (, хотя это тоже было бы хорошо ), но больше похоже на концептуальный подход, например, могу ли я сделать все это с помощью UIView с пользовательским рисунком, или нам нужно поговорить о пользовательском ключе анимации, которые я понимаю, включают CALayers и тому подобное. Другими словами,Какова правильная архитектура для всего этого, которая была бы проще в кодировании и при этом эффективна с точки зрения композитинга для плавной анимации?

9
задан Jaanus 7 June 2012 в 06:03
поделиться