TSImageGenerateView.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //
  2. // TSImageGenerateView.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/4/24.
  6. //
  7. class TSImageGenerateView:TSBaseView {
  8. var refreshHandel:(()->Void)?
  9. lazy var infoLabel: UILabel = {
  10. let infoLabel = UILabel.createLabel(font: .font(size: 12),textColor: .white,textAlignment: .center,numberOfLines: 0)
  11. return infoLabel
  12. }()
  13. lazy var refreshBtn: TSUIExpandedTouchButton = {
  14. let refreshBtn = TSUIExpandedTouchButton()
  15. refreshBtn.setUpButton(image: UIImage(named: "refresh_white"))
  16. {[weak self] in
  17. guard let self = self else { return }
  18. refreshHandel?()
  19. }
  20. refreshBtn.isHidden = true
  21. return refreshBtn
  22. }()
  23. lazy var blurEffect: UIVisualEffectView = {
  24. let blurEffect = createBlurEffectView(style: .dark)
  25. return blurEffect
  26. }()
  27. // lazy var blurEffect: TSDynamicBlurView = {
  28. // return TSDynamicBlurView()
  29. // }()
  30. private var bgImageURLString:String?
  31. lazy var bgImageView: UIImageView = {
  32. let bgImageView = UIImageView.createImageView(contentMode: .scaleAspectFill)
  33. bgImageView.addSubview(blurEffect)
  34. blurEffect.snp.makeConstraints { make in
  35. make.edges.equalToSuperview()
  36. }
  37. return bgImageView
  38. }()
  39. var titleTop:CGFloat = 86.0 {
  40. didSet{
  41. infoLabel.snp.updateConstraints { make in
  42. make.top.equalTo(titleTop)
  43. }
  44. }
  45. }
  46. override func creatUI() {
  47. backgroundColor = .assist
  48. contentView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(clickContentView)))
  49. contentView.addSubview(bgImageView)
  50. bgImageView.snp.makeConstraints { make in
  51. make.edges.equalToSuperview()
  52. }
  53. contentView.addSubview(infoLabel)
  54. infoLabel.snp.makeConstraints { make in
  55. // make.top.equalTo(titleTop)
  56. make.leading.equalTo(8)
  57. make.trailing.equalTo(-8)
  58. make.centerY.equalToSuperview().offset(0)
  59. }
  60. contentView.addSubview(refreshBtn)
  61. refreshBtn.snp.makeConstraints { make in
  62. make.centerX.equalToSuperview()
  63. make.top.equalTo(infoLabel.snp.bottom).offset(8)
  64. make.width.height.equalTo(20.0)
  65. }
  66. }
  67. func updateInfoLabelCenterY() {
  68. infoLabel.snp.updateConstraints { make in
  69. make.centerY.equalToSuperview().offset(refreshBtn.isHidden ? 0 : -14.0)
  70. }
  71. }
  72. private var isCanClick:Bool = false
  73. @objc func clickContentView() {
  74. if isCanClick{
  75. refreshHandel?()
  76. }
  77. }
  78. func setProgress(progress:Float) {
  79. refreshBtn.isHidden = true
  80. isCanClick = false
  81. let progressInt = Int(progress*100)
  82. infoLabel.text = "Generating".localized + "..." + "\n\n\(progressInt)%"
  83. infoLabel.textColor = .themeColor
  84. // infoLabel.applyGradient(colors: ["#E961F6".uiColor,"#7E57F4".uiColor])
  85. updateInfoLabelCenterY()
  86. }
  87. func setTaskExpired(){
  88. isCanClick = true
  89. setProgress(progress: 0.0)
  90. infoLabel.text = "This task has expired".localized
  91. infoLabel.textColor = .white
  92. refreshBtn.isHidden = false
  93. isCanClick = true
  94. refreshBtn.setImage(UIImage(named: "delete_white"), for: .normal)
  95. updateInfoLabelCenterY()
  96. }
  97. func setBgImageViewURLString(bgImageURLString:String) {
  98. if self.bgImageURLString == bgImageURLString {
  99. return
  100. }
  101. bgImageView.image = nil
  102. bgImageView.setAsyncImage(urlString: bgImageURLString, completion: { [weak self] image in
  103. guard let self = self else { return }
  104. if let image = image{
  105. bgImageView.image = image//TSDynamicBlurView.blurred(image: image)
  106. }
  107. })
  108. }
  109. func setFailText(text:String,refresh:Bool = true){
  110. setProgress(progress: 0.0)
  111. infoLabel.text = text
  112. infoLabel.textColor = .white
  113. if refresh {
  114. refreshBtn.isHidden = false
  115. refreshBtn.setImage(UIImage(named: "refresh_white"), for: .normal)
  116. }else{
  117. refreshBtn.isHidden = true
  118. }
  119. isCanClick = true
  120. updateInfoLabelCenterY()
  121. }
  122. }