Ищете анимацию водителя, например Uber в Swift

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

Вот мой код, я увеличиваю и уменьшаю ширину и высоту круга в автореверсной анимации, но у него есть 2 проблемы:

  1. Это не работает, как анимация происходит из центра. Его начало и конец из угла.

  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
    })
}

Другие вопросы по тегам