首页 文章

快速图像旋转360度

提问于
浏览
1

我正在开发Swift中的iOS应用程序,我希望用动作旋转360度的图像 . 一旦完成每一轮,动画应该停止2秒 .

每次旋转完成后我需要2秒延迟 . 我怎样才能设置延迟?我做过图像旋转算法 .

func rotate360Degrees(_ duration: CFTimeInterval = 1.0, completionDelegate: CAAnimationDelegate? = nil) {
    let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
    rotateAnimation.fromValue = 0.0
    rotateAnimation.toValue = CGFloat(M_PI * 2.0)
    rotateAnimation.duration = duration

    if let delegate: CAAnimationDelegate = completionDelegate {
        rotateAnimation.delegate = delegate

    }
    rotateAnimation.repeatCount = Float.greatestFiniteMagnitude;

    self.layer.add(rotateAnimation, forKey: nil)
}

为了延迟,我试过这个:

let deadlineTime = DispatchTime.now() + .seconds(2)
    DispatchQueue.main.asyncAfter(deadline: deadlineTime, execute: {
        self.imgView.rotate360Degrees()
    })

它不起作用 .

1 回答

  • 0

    它非常简单 . 只需在一个体内调用你的函数,一旦完成旋转,在延迟2秒后调用相同的函数 . 什么时候你想停止只是停止删除它 . 例

    unowned let unownedSelf = self
    
    let deadlineTime = DispatchTime.now() + .seconds(2)
    DispatchQueue.main.asyncAfter(deadline: deadlineTime, execute: { 
     unownedSelf.functionToCall()
     })
    

相关问题