Ищете анимацию водителя, например Uber в Swift
Я хочу сделать анимацию, например, когда приложение начинает искать драйверы, когда круг увеличивается и уменьшается.
Вот мой код, я увеличиваю и уменьшаю ширину и высоту круга в автореверсной анимации, но у него есть 2 проблемы:
Это не работает, как анимация происходит из центра. Его начало и конец из угла.
Радиус круга не остается неизменным. Превращается в квадрат при закрытии
Код:
let duration = 2.0
UIView.animate(withDuration: duration, delay: 0, options: [.repeat, .autoreverse] , animations: {
let cntr = self.circularView.center
self.circularView.layer.cornerRadius = min(self.circularView.frame.size.height,self.circularView.frame.size.width)/2
self.circularView.center = cntr
self.circularView.frame.size.width = (self.circularView.frame.size.width) * 2
self.circularView.frame.size.height = (self.circularView.frame.height) * 2
1 ответ
Попробуйте это: Оставьте угловой радиус за пределами анимации. Анимируйте с помощью преобразования вместо изменения ширины или ограничений. В вашей раскадровке / коде установите положение круговых видов с ограничениями, связанными с центром:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.circularView!.layer.cornerRadius = self.circularView!.frame.width / 2
UIView.animate(withDuration: 2.0, delay: 0, options: [.repeat, .autoreverse] , animations: {
self.isZooming = !self.isZooming
var zoomTransform = CGAffineTransform.identity
let scale: CGFloat = self.isZooming ? 0.5 : 1.5
zoomTransform = zoomTransform.scaledBy(x: scale, y: scale)
self.circularView?.transform = zoomTransform
})
}