ios - 使用 animateKeyframesWithDuration 在屏幕上创建一个连续旋转的正方形

标签 ios animation swift rotation repeat

我尝试使用下面的代码在屏幕上创建一个连续旋转的正方形。但我不知道为什么转速在变化。我怎样才能改变代码使转速不变?我尝试了不同的 UIViewKeyframeAnimationOptions,但似乎都不起作用。

override func viewDidLoad() {
    super.viewDidLoad()

    let square = UIView()
    square.frame = CGRect(x: 55, y: 300, width: 40, height: 40)
    square.backgroundColor = UIColor.redColor()
    self.view.addSubview(square)

    let duration = 1.0
    let delay = 0.0
    let options = UIViewKeyframeAnimationOptions.Repeat
        UIView.animateKeyframesWithDuration(duration, delay: delay, options: options, animations: {
        let fullRotation = CGFloat(M_PI * 2)

        UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 1/3, animations: {
            square.transform = CGAffineTransformMakeRotation(1/3 * fullRotation)
        })                        
        UIView.addKeyframeWithRelativeStartTime(1/3, relativeDuration: 1/3, animations: {
            square.transform = CGAffineTransformMakeRotation(2/3 * fullRotation)
        })                        
        UIView.addKeyframeWithRelativeStartTime(2/3, relativeDuration: 1/3, animations: {
            square.transform = CGAffineTransformMakeRotation(3/3 * fullRotation)
        })
        }, completion: {finished in
        })
    }         

最佳答案

我以前也遇到过同样的问题,我是这样解决的:

swift 2

let raw = UIViewKeyframeAnimationOptions.Repeat.rawValue | UIViewAnimationOptions.CurveLinear.rawValue
let options = UIViewKeyframeAnimationOptions(rawValue: raw)

swift 3、4、5

let raw = UIView.KeyframeAnimationOptions.repeat.rawValue | UIView.AnimationOptions.curveLinear.rawValue
let options = UIView.KeyframeAnimationOptions(rawValue: raw)

我在放弃之前就解决了这个问题。我不认为有关于它的文档,但它确实有效。

关于ios - 使用 animateKeyframesWithDuration 在屏幕上创建一个连续旋转的正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26665124/

相关文章:

iphone - iOS - 方向变化 - 光学错觉或元素移动?

arrays - 用 txt 文件中的字符串填充数组

swift - 从行中的单元格获取标签文本

swift - 不使用@objc 的 swift 可选协议(protocol)方法

ios - 删除文件时从分支中提取更改

ios - 如何从 ViewController 更改自定义 UIView 的变量

javascript - 为什么这个 JavaScript 动画只适用于一个元素,尽管每个元素都有相同的代码

ios - SwiftUI 的 AnimatableModifier 现在已弃用,但如何 "use Animatable directly"?

objective-c - iOS 5 - 相机覆盖克隆

ios - 使用 quartz 绘制折线图?