Невозможно использовать UIButton при использовании CABasicAnimation для его перемещения - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь анимировать UIButton так, чтобы он двигался по экрану, но как только он оживляет, он вылетает, когда я пытаюсь фактически использовать его в качестве кнопки.

Разве это не разрешено? Как это можно сделать?

Я попытался поместить кнопку в UIView, а затем анимировать представление вместо этого - все еще происходит сбой.

    @IBOutlet weak var button: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        CATransaction.begin()

        let animation = CABasicAnimation(keyPath: "position")
        animation.fromValue = [view.layer.frame.width, 200]
        animation.toValue = [0, 200]
        animation.duration = 25.0
        animation.repeatCount = .greatestFiniteMagnitude

        button.layer.add(animation, forKey: "animatePosition")

        CATransaction.commit()
    }

При попытке нажать кнопку выдается следующее исключение :

*** Завершение работы приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [__ NSArrayI pointValue]: нераспознанный селектор, отправленный экземпляру 0x2816c4a40'

1 Ответ

1 голос
/ 12 февраля 2020

Вы присваиваете массив из двух числовых значений c, а не ожидаемого типа позиции. Тип значения, ожидаемого CABasicAnimation, равен NSValue(cgPoint:).

. Вы исправите этот cra sh следующим образом:

animation.fromValue = NSValue(cgPoint: CGPoint(x: view.layer.frame.width, y: 200.0))
animation.toValue = NSValue(cgPoint: CGPoint(x: 0, y: 200))
...