Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中设置旋转图像的动画_Ios_Swift_Image_Uiimageview - Fatal编程技术网

Ios 在Swift中设置旋转图像的动画

Ios 在Swift中设置旋转图像的动画,ios,swift,image,uiimageview,Ios,Swift,Image,Uiimageview,我有一个图像,如果按下按钮,我想继续旋转,直到我调用一个动作停止旋转。我尝试了这些网站:我不得不给代表团创造机会,当我试图改变它时,它崩溃了 当我叫动作的时候,它不会旋转。非常感谢。代码如下: Andrewcbancroft.com: extension UIView { func rotate360Degrees(duration: CFTimeInterval = 1.0, completionDelegate: AnyObject? = nil) { let

我有一个图像,如果按下按钮,我想继续旋转,直到我调用一个动作停止旋转。我尝试了这些网站:我不得不给代表团创造机会,当我试图改变它时,它崩溃了 当我叫动作的时候,它不会旋转。非常感谢。代码如下:

Andrewcbancroft.com:

    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