NetAnimationView.swift 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // NetAnimationView.swift
  3. // SwiftBilibili
  4. //
  5. // Created by 罗文 on 2021/1/15.
  6. // Copyright © 2021年 罗文. All rights reserved.
  7. //
  8. import UIKit
  9. enum AnimationType {
  10. case loading
  11. case failure
  12. }
  13. final class NetAnimationView: UIView {
  14. fileprivate var type : AnimationType
  15. fileprivate let imageView = UIImageView().then{
  16. $0.contentMode = .scaleToFill
  17. }
  18. fileprivate let textLabel = UILabel().then{
  19. $0.textColor = .db_darkGray
  20. $0.font = NYFont.SysFont.sys_15
  21. $0.textAlignment = .center
  22. }
  23. init(animationType:AnimationType) {
  24. self.type = animationType
  25. super.init(frame: .zero)
  26. self.isHidden = true
  27. addSubview(imageView)
  28. addSubview(textLabel)
  29. configureSubView()
  30. }
  31. required init?(coder aDecoder: NSCoder) {
  32. fatalError("init(coder:) has not been implemented")
  33. }
  34. fileprivate func configureSubView() {
  35. if type == .loading {
  36. textLabel.text = "正在努力加载数据中..."
  37. // imageView.image = UIImage(named: "animation_loading_loading_1")
  38. // imageView.animationImages = [UIImage(named: "animation_loading_loading_1")!,UIImage(named: "animation_loading_loading_2")!]
  39. imageView.animationDuration = 0.5
  40. imageView.animationRepeatCount = 0
  41. }
  42. if type == .failure {
  43. textLabel.text = "似乎与互联网已经断开连接"
  44. // imageView.image = UIImage(named: "animation_loading_error_4")
  45. // imageView.animationImages = [UIImage(named: "animation_loading_error_1")!,
  46. // UIImage(named: "animation_loading_error_2")!,
  47. // UIImage(named: "animation_loading_error_3")!,
  48. // UIImage(named: "animation_loading_error_4")!]
  49. imageView.animationDuration = 2.0
  50. imageView.animationRepeatCount = 1
  51. }
  52. }
  53. func startAnimation(animationType:AnimationType) {
  54. self.isHidden = false
  55. imageView.startAnimating()
  56. }
  57. func stopAnimation(animationType:AnimationType = .loading) {
  58. self.isHidden = true
  59. imageView.stopAnimating()
  60. }
  61. override func layoutSubviews() {
  62. super.layoutSubviews()
  63. imageView.snp.makeConstraints { (make) in
  64. make.left.right.top.equalToSuperview()
  65. make.height.equalTo(180)
  66. }
  67. textLabel.snp.makeConstraints { (make) in
  68. make.left.right.equalToSuperview()
  69. make.top.equalTo(imageView.snp.bottom)
  70. make.height.equalTo(20)
  71. }
  72. }
  73. }