我想每次旋转UIButton多次(90°),以相同的角度旋转。我遇到的问题是,它执行一个90°旋转,然后下次我按下按钮时,它再次从0开始,并返回相同的先前值。我的代码;

let rotateView = CABasicAnimation()

    rotateView.toValue = 90 * (M_PI) / 180

    rotateView.duration = 0
    rotateView.repeatCount = 0
    rotateView.removedOnCompletion = false
    rotateView.fillMode = kCAFillModeForwards
    rotateView.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
    smile2.layer.addAnimation(rotateView, forKey: "transform.rotation.z")


我认为问题可能是我无法指定fromValue,因为我使用随机数开头-这是代码;

let value: NSArray = [90, 180, 270, 360]
    let range: UInt32 = UInt32(value.count)
    let randomNumber = Double(arc4random_uniform(range))


使其更加清晰:按钮的fromValuelet value中的随机数。我想使按钮在每次按下时都从该随机数连续旋转90°。

最佳答案

问题部分在于这些行:

rotateView.removedOnCompletion = false
rotateView.fillMode = kCAFillModeForwards


这样的事情只是拐杖,表明您并不真正了解动画的工作原理。您遗漏了关键的一步,并用这些路线弥补了这一失败。关键步骤是必须将视图的transform设置为动画要提供的值。完成此操作后,这些行将不再需要,并且后续的动画也将正确运行。

另请注意,如果使用加法动画,您的生活会简单很多,因为您可以从任何位置旋转90度。

10-08 07:30
查看更多