Swift 单击按钮时完全重新启动动画

Swift Completely restart the animation on button click

所以我想做的是重新启动动画,当它完成并按下重新启动按钮时。

这是我现在得到的。 它是这样开始的:

import UIKit
class ViewController: UIViewController {

    @IBOutlet weak var fillView: UIView!

    @IBAction func startAnimation(sender: AnyObject) {
        self.animationBackground(fillView, animationTime: Float(15))
    }

    @IBAction func restartAnimation(sender: AnyObject) {
        let layerRectangle = fillView.layer
       restartLayer(layerRectangle)
    }

    func animationBackground(view:UIView,animationTime:Float){
        UIView.animateWithDuration(NSTimeInterval(animationTime), delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: {
            view.transform = CGAffineTransformMakeTranslation(0.0,  self.screenSize.height-67)
        },completion:nil)
    }

    func restartLayer(layer:CALayer){
        layer.beginTime = 0.0
        layer.speed = 0.0        
    }
}

重启功能仅在动画播放时有效。但是当它完成时,不会从头开始重新启动动画。有关如何在单击按钮时重新启动动画但仅在已完成时重新启动动画的任何提示?

你已经翻译了position和frame(位置)。因此,一旦动画完成,您必须将帧恢复到其原始位置。您可以在动画的完成块中恢复帧。

这里是例子:

 UIView.animateWithDuration(1, animations: { () -> Void in
     self.fillView.transform = CGAffineTransformMakeTranslation(0, 40)
      }) { (end) -> Void in
             self.fillView.transform = CGAffineTransformIdentity
 }

您可以在开始动画之前将变换设置为 CGAffineTransformIdentity

我上面已经写了..顺便说一下:

func animationBackground(view:UIView,animationTime:Float){

     self.fillView.transform = CGAffineTransformIdentity

     UIView.animateWithDuration(NSTimeInterval(animationTime), delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: {
                view.transform = CGAffineTransformMakeTranslation(0.0,  self.screenSize.height-67)
        },completion:nil)
    }