使用CABasicAnimation移动时无法使用UIButton

问题描述 投票:1回答:1

我正在尝试为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'

ios swift uibutton cabasicanimation
1个回答
0
投票

您要分配两个数值的数组,而不是期望的位置类型。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))
© www.soinside.com 2019 - 2024. All rights reserved.