Ios 在Swift中设置旋转图像的动画
我有一个图像,如果按下按钮,我想继续旋转,直到我调用一个动作停止旋转。我尝试了这些网站:我不得不给代表团创造机会,当我试图改变它时,它崩溃了 当我叫动作的时候,它不会旋转。非常感谢。代码如下: Andrewcbancroft.com:Ios 在Swift中设置旋转图像的动画,ios,swift,image,uiimageview,Ios,Swift,Image,Uiimageview,我有一个图像,如果按下按钮,我想继续旋转,直到我调用一个动作停止旋转。我尝试了这些网站:我不得不给代表团创造机会,当我试图改变它时,它崩溃了 当我叫动作的时候,它不会旋转。非常感谢。代码如下: Andrewcbancroft.com: extension UIView { func rotate360Degrees(duration: CFTimeInterval = 1.0, completionDelegate: AnyObject? = nil) { let
extension UIView {
func rotate360Degrees(duration: CFTimeInterval = 1.0, completionDelegate: AnyObject? = nil) {
let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotateAnimation.fromValue = 0.0
rotateAnimation.toValue = CGFloat(M_PI * 2.0)
rotateAnimation.duration = duration
if let delegate: AnyObject = completionDelegate {
rotateAnimation.delegate = delegate //<- error "Cannot assign value of type 'AnyObject' to type 'CAAnimationDelegate?'"
}
self.layer.add(rotateAnimation, forKey: nil)
}
}
尝试调用我的图像视图以在我的viewDidLoad方法中开始旋转时,不会发生任何事情。错误说明:
您正在以AnyObject
func rotate360Degrees(duration: CFTimeInterval = 1.0, completionDelegate: AnyObject? = nil)
AnyObject
不符合CAAnimationDelegate
,因此不能将其用作委托
如果确定传入的控制器可以是正确的委托,则将其转换为正确类型的委托:
if let delegate = completionDelegate as? CAAnimationDelegate {
rotateAnimation.delegate = delegate
}
如果您正在执行此操作,并且它正在崩溃:
rotateAnimation.delegate = completionDelegate as! CAAnimationDelegate
那么您没有传入符合CAAnimationDelegate
完全不传递委托并将其分配到扩展之外可能更简单。没有人会阅读这些站点上的代码并为您编写代码。发布您尝试的代码和错误消息。好的,我更新了它
rotateAnimation.delegate = completionDelegate as! CAAnimationDelegate