我正在尝试为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'
您要分配两个数值的数组,而不是期望的位置类型。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))