【问题标题】:Multiple rotations on UIButtonUIButton 上的多次旋转
【发布时间】:2016-02-10 19:12:22
【问题描述】:

我想每次都以相同的度数(90°)多次旋转 UIButton。我遇到的问题是它执行了一次 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°。

【问题讨论】:

    标签: xcode swift uibutton rotation cgaffinetransform


    【解决方案1】:

    问题部分在于以下几行:

    rotateView.removedOnCompletion = false
    rotateView.fillMode = kCAFillModeForwards
    

    那种东西只是一根拐杖,表明你并不真正了解动画的工作原理。你遗漏了一个关键步骤,并用这些线条掩盖了失败。关键步骤是您必须将视图的transform 设置为与动画将赋予它的值相同的值。一旦你这样做了,那些行就不再需要了,连续的动画也能正常工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 2017-10-05
      • 2014-12-16
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多