UIButton上的多次旋转

时间:2016-02-10 19:12:22

标签: xcode swift uibutton rotation cgaffinetransform

我想每次(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°。

1 个答案:

答案 0 :(得分:0)

问题部分在于以下几点:

transform

这种事情只是一个拐杖,并表明你并不真正了解动画是如何运作的。你正在抛弃一个至关重要的步骤,并用这些线来弥补失败。关键的一步是您必须将视图的 public class Book { @NotEmpty(message="please fill author") pirvate String author; @NotEmpty("message="please fill title") private String title; @NotNull(message="you get my drift ;)") private Map<K,V> someMap; public Book(String author,String title, Map map){ this.author = author; //blah blah no need for the setters... } // blah blah other getters and setters } 设置为与动画相同的值。一旦你这样做,这些行将是不必要的,并且连续的动画将正常工作。

另请注意,如果使用添加动画,您的生活会更加简单,因为您可以随时随地旋转90度。