旋转imageview动画

问题描述 投票:1回答:3

我想永远旋转一个imageview。我试过以下代码:

    UIView.animateWithDuration(3, animations: {
        self.loginLogo.transform = CGAffineTransformMakeRotation((360 * CGFloat(M_PI)) / 360)
        }){ (finished) -> Void in
            self.rotateImage()
    }

但这有一段时间了。我的imageview并没有永远旋转。我该如何解决?

ios swift
3个回答
1
投票

如果您想永久旋转图像,可以这样做:

func rotateViewLayer() {
    let rotateView = CABasicAnimation()

    rotateView.fromValue = 0.degreesToRadian
    rotateView.toValue = 360.degreesToRadian
    rotateView.duration = 1
    rotateView.repeatCount = Float.infinity
    rotateView.removedOnCompletion = false
    rotateView.fillMode = kCAFillModeForwards
    rotateView.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
    imageView.layer.addAnimation(rotateView, forKey: "transform.rotation.z")
}

这是你的助手扩展:

extension Int {
    var degreesToRadian : CGFloat {
        return CGFloat(self) * CGFloat(M_PI) / 180.0
    }
}

您可以参考THIS示例项目获取更多信息。


0
投票

在视图的图层上使用它

var myImageView:UIImageView?
    var rotation = CABasicAnimation(keyPath: "transform.rotation")
    rotation.fromValue = 0.0
    rotation.toValue = 2*M_PI
    rotation.duration = 1.1
    rotation.repeatCount = Float.infinity
    myImageView?.layer.addAnimation(rotation, forKey: "Spin")

0
投票

这应该工作

func startAnimationWithDuration(duration:CGFloat)
    {
        var rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
        rotationAnimation.fromValue = 0
        rotationAnimation.toValue = 2 * M_PI
        rotationAnimation.duration = NSTimeInterval(duration)
        rotationAnimation.repeatCount = 1000.0 //some large value
        imageView.layer.addAnimation(rotationAnimation, forKey: "spin")
    }
© www.soinside.com 2019 - 2024. All rights reserved.