小码哥-斗鱼直播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. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值