小碼哥-鬥魚直播APP之加載數據動畫

加載數據動畫

動畫效果

  • 效果如下:

  • 效果分析

    • 在每個界面第一次請求數據時,會先展示一個請求數據的動畫
    • 多個界面都有該動畫效果,因此需要抽取一個最基本的父控制器
    • 在父控制器中添加顯示動畫View&UICollectionView的業務邏輯即可
      • 進入界面,展示動畫View,隱藏UICollectionView
      • 請求到數據,隱藏動畫View,展示UICollectionView

父控制器抽取

  • 四個界面需要有一個共同的父類
    • (之後做其他界面也會集成子該類)
  • 創建BaseViewController
    • 在控制器中添加用於展示動畫的UIImageView
    • 給UIImageView設置執行動畫的圖片,並且執行動畫
    • 因爲其他界面用於展示內容的View
    • 對外提供方法,當數據在家完成時,可以隱藏UIImageView&顯示展示內容的View
  • 代碼分析<
  • 代碼如下:
  1. class BaseViewController: UIViewController {
  2. // MARK: 定義屬性
  3. var contentView : UIView?
  4. // MARK: 懶加載屬性
  5. lazy var animImageView : UIImageView = { [unowned self] in
  6. let imageView = UIImageView(image: UIImage(named: "img_loading_1"))
  7. imageView.center = self.view.center
  8. imageView.animationImages = [UIImage(named: "img_loading_1")!, UIImage(named: "img_loading_2")!]
  9. imageView.animationRepeatCount = LONG_MAX
  10. imageView.animationDuration = 0.3
  11. imageView.autoresizingMask = [.flexibleBottomMargin, .flexibleTopMargin]
  12. return imageView
  13. }()
  14. // MARK:- 系統回調
  15. override func viewDidLoad() {
  16. super.viewDidLoad()
  17. setupUI()
  18. }
  19. }
  20. extension BaseViewController {
  21. func setupUI() {
  22. // 0.設置整個背景
  23. view.backgroundColor = UIColor(r: 250, g: 250, b: 250)
  24. // 1.添加animImageView
  25. view.addSubview(animImageView)
  26. // 2.執行動畫
  27. animImageView.startAnimating()
  28. // 3.隱藏collectionView
  29. contentView?.isHidden = true
  30. }
  31. func loadDataFinished() {
  32. animImageView.stopAnimating()
  33. animImageView.isHidden = true
  34. contentView?.isHidden = false
  35. }
  36. }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章