TSGeneratoringAnimationView.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. //
  2. // Untitled.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/5/12.
  6. //
  7. import Kingfisher
  8. class TSGeneratoringAnimationView : TSBaseView {
  9. var isShowBackGeneration:Bool = false {
  10. didSet{
  11. UIView.animate(withDuration: 0.3) {
  12. self.backgroundGenerateBtn.isHidden = !self.isShowBackGeneration
  13. }
  14. }
  15. }
  16. lazy var cusStackView: UIStackView = {
  17. let cusStackView = UIStackView()
  18. cusStackView.axis = .vertical
  19. cusStackView.distribution = .fill
  20. cusStackView.alignment = .center
  21. return cusStackView
  22. }()
  23. lazy var animatedImageView: AnimatedImageView = {
  24. let animatedImageView = AnimatedImageView()
  25. animatedImageView.autoPlayAnimatedImage = false
  26. if let gifURL = Bundle.main.url(forResource: "rotatingAnimation_1", withExtension: "gif") {
  27. animatedImageView.kf.setImage(with: gifURL, options: [.cacheOriginalImage]) { result in
  28. switch result {
  29. case .success(let value):
  30. print("GIF 加载成功: \(value.source.url?.absoluteString ?? "")")
  31. case .failure(let error):
  32. print("GIF 加载失败: \(error.localizedDescription)")
  33. }
  34. }
  35. }
  36. return animatedImageView
  37. }()
  38. lazy var timeLabel: UILabel = {
  39. let textLabel = UILabel.createLabel(font: .font(size: 18,weight: .semibold),textColor: .white,textAlignment: .center)
  40. textLabel.isHidden = true
  41. return textLabel
  42. }()
  43. lazy var textLabel: UILabel = {
  44. let textLabel = UILabel.createLabel(font: .font(size: 18),textColor: .white,textAlignment: .center,numberOfLines: 0)
  45. textLabel.isHidden = true
  46. return textLabel
  47. }()
  48. lazy var infoLabel: UILabel = {
  49. let textLabel = UILabel.createLabel(font: .font(size: 14),textColor: .white.withAlphaComponent(0.6),textAlignment: .center,numberOfLines: 0)
  50. textLabel.isHidden = true
  51. return textLabel
  52. }()
  53. lazy var backgroundGenerateBtn: UIButton = {
  54. let btn = UIButton.createButton(title: "Generate in the background".localized,font: .font(size: 16),titleColor: .themeColor,corner: 24)
  55. btn.layer.borderColor = UIColor.themeColor.cgColor
  56. btn.layer.borderWidth = 1.0
  57. btn.titleLabel?.adjustsFontSizeToFitWidth = true
  58. btn.isHidden = true
  59. return btn
  60. }()
  61. override func creatUI() {
  62. contentView.addSubview(cusStackView)
  63. cusStackView.snp.makeConstraints { make in
  64. make.edges.equalToSuperview()
  65. }
  66. setUpGeneratorContentView()
  67. }
  68. func setUpGeneratorContentView(){
  69. cusStackView.addArrangedSubview(animatedImageView)
  70. animatedImageView.snp.makeConstraints { make in
  71. make.top.equalTo(0)
  72. make.width.height.equalTo(120)
  73. }
  74. cusStackView.addSpacing(length: 12.0)
  75. cusStackView.addArrangedSubview(timeLabel)
  76. timeLabel.snp.makeConstraints { make in
  77. make.leading.equalTo(kTextLeading)
  78. make.trailing.equalTo(-kTextLeading)
  79. }
  80. cusStackView.addSpacing(length: 16.0)
  81. cusStackView.addArrangedSubview(textLabel)
  82. textLabel.snp.makeConstraints { make in
  83. make.leading.equalTo(kTextLeading)
  84. make.trailing.equalTo(-kTextLeading)
  85. }
  86. cusStackView.addSpacing(length: 8.0)
  87. cusStackView.addArrangedSubview(infoLabel)
  88. infoLabel.snp.makeConstraints { make in
  89. make.leading.equalTo(kTextLeading)
  90. make.trailing.equalTo(-kTextLeading)
  91. }
  92. cusStackView.addSpacing(length: 20.0)
  93. cusStackView.addArrangedSubview(backgroundGenerateBtn)
  94. backgroundGenerateBtn.snp.makeConstraints { make in
  95. make.width.lessThanOrEqualTo(k_ScreenWidth - 64)
  96. make.width.greaterThanOrEqualTo(250)
  97. make.height.equalTo(48)
  98. make.bottom.equalTo(0)
  99. }
  100. }
  101. }
  102. extension TSGeneratoringAnimationView {
  103. func startAnimation() {
  104. kDelayMainShort {
  105. self.animatedImageView.startAnimating()
  106. }
  107. }
  108. func stopAnimation() {
  109. self.animatedImageView.stopAnimating()
  110. }
  111. func setText(time:String,info:String) {
  112. timeLabel.text = time
  113. infoLabel.text = info
  114. timeLabel.isHidden = time.isEmpty
  115. infoLabel.isHidden = info.isEmpty
  116. }
  117. func setProgressText(text:String) {
  118. textLabel.text = text
  119. textLabel.isHidden = text.isEmpty
  120. }
  121. }