【发布时间】:2020-02-12 00:10:11
【问题描述】:
我正在尝试为 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'
【问题讨论】:
-
尝试使用传递
CGPoint而不是数组。确保您的 IBAction 正确连接到您的按钮。 -
@LeoDabus 谢谢,我试过了,但它仍然崩溃:animation.fromValue = CGPoint(x: view.layer.frame.width, y: 200.0) animation.toValue = CGPoint(x: 0 , y: 200.0)
-
我认为您的问题在于您的按钮连接。编辑您的问题并发布按下按钮时应调用的 IBAction。此外,您应该提供您的错误发生在哪一行。
标签: ios swift uibutton cabasicanimation