ios 加载动画

主要是设置帧动画,楼主在这里设置了四张图片

import UIKit

class LoadAnimationView: UIView {

   private var isAnimating:Bool = false
   private var backImageView:UIImageView!
   private var imageView:UIImageView!
   
   override init(frame: CGRect) {
       super.init(frame: frame)
       self.backgroundColor = UIColor.clear
       backImageView = UIImageView.init(frame: CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.height))
       backImageView.backgroundColor = UIColor.clear
       self.addSubview(backImageView)
       
       self.imageView = UIImageView.init(frame: CGRect(x: frame.size.width / 2 - 120, y: frame.size.height / 2 - 50, width: 200, height: 73))
       backImageView.addSubview(imageView)
       
       imageView.animationImages = [
           UIImage.init(named: "jiazai1Image"),
           UIImage.init(named: "jiazai2Image"),
           UIImage.init(named: "jiazai3Image"),
           UIImage.init(named: "jiazai4Image")
           ] as? [UIImage]
       self.layer.isHidden = true
   }
   
   func startAnimation() {
       if isAnimating {
           return
       }
       isAnimating = true
       self.layer.isHidden = false
       self.doAnimation()
       let delay = DispatchTime.now() + 10.0
       DispatchQueue.main.asyncAfter(deadline: delay) {
           if self.isAnimating {
               print("菊花加载超时")
                self.stopAnimation()
           }
       }
       
   }
   
   private func doAnimation() {
       imageView.animationDuration = 2    //设置动画总时间
       imageView.animationRepeatCount = 0   //设置重复次数,0表示不重复
       imageView .startAnimating()
   }
   
   func stopAnimation() {
       if isAnimating == false {
           return
       }
       
       isAnimating = false
       UIView.animate(withDuration: 0.3, animations: {
           self.alpha = 0
       }) { (finish) in
           self.imageView.stopAnimating()
           self.layer.isHidden = true
           self.alpha = 1
       }
   }
   
   required init?(coder aDecoder: NSCoder) {
       fatalError("init(coder:) has not been implemented")
   }
   
}

controller里代码如下

import UIKit

class LoadAnimationViewController: UIViewController {
    
    lazy var indicatorView:LoadAnimationView = {
        let view = LoadAnimationView.init(frame: CGRect(x: 0, y: self_NavigationH, width: kScreen_Width, height: kScreen_Height - self_NavigationH))
        self.view.addSubview(view)
        return view
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.white
        self.indicatorView.startAnimation()
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3.0) {
            self.indicatorView.stopAnimation()
        }
    }

}

你可能感兴趣的:(ios 加载动画)