使用 CABasicAnimation 移动它时不能使用 UIButton

Cannot use UIButton when using CABasicAnimation to move it

我正在尝试为 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()
    }

尝试单击按钮时抛出以下异常:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI pointValue]: unrecognized selector sent to instance 0x2816c4a40'

您分配的是两个数值的数组,而不是预期的位置类型。 CABasicAnimation 期望的值类型是 NSValue(cgPoint:).

您将通过以下方式修复该崩溃:

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