TSUploadImageView.swift 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. //
  2. // TSUploadImageView.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/6/24.
  6. //
  7. class TSUploadImageView: TSBaseView {
  8. var clickBgViewBlock:(()->Void)?
  9. var upLoadImage:UIImage? = nil {
  10. didSet{
  11. if let image = upLoadImage {
  12. upLoadView.isHidden = true
  13. uploadImageView.isHidden = false
  14. deleteBtn.isHidden = false
  15. uploadImageView.image = image
  16. uploadVideoView.pause()
  17. }else {
  18. upLoadView.isHidden = false
  19. uploadImageView.isHidden = true
  20. deleteBtn.isHidden = true
  21. uploadImageView.image = nil
  22. uploadVideoView.play()
  23. }
  24. }
  25. }
  26. lazy var subInfoLabel: UILabel = {
  27. let textLabel = UILabel.createLabel(text: "Select an image with face fully visible".localized,font: .font(size: 12),textColor: UIColor.white.withAlphaComponent(0.6),textAlignment: .center,numberOfLines: 0)
  28. return textLabel
  29. }()
  30. lazy var upLoadView: UIView = {
  31. let bgView = UIView()
  32. let addImageView = UIImageView.createImageView(imageName: "add")
  33. bgView.addSubview(addImageView)
  34. addImageView.snp.makeConstraints { make in
  35. make.top.equalTo(0)
  36. make.centerX.equalToSuperview()
  37. make.width.height.equalTo(24)
  38. }
  39. let textLabel = UILabel.createLabel(text: "Upload Photo".localized,font: .font(size: 16),textColor: .white,textAlignment: .center,numberOfLines: 0)
  40. bgView.addSubview(textLabel)
  41. textLabel.snp.makeConstraints { make in
  42. make.top.equalTo(addImageView.snp.bottom).offset(16)
  43. make.leading.equalTo(18)
  44. make.trailing.equalTo(-18)
  45. make.bottom.equalToSuperview()
  46. }
  47. // bgView.addSubview(subInfoLabel)
  48. // subInfoLabel.snp.makeConstraints { make in
  49. // make.top.equalTo(textLabel.snp.bottom).offset(8)
  50. // make.leading.equalTo(18)
  51. // make.trailing.equalTo(-18)
  52. // make.bottom.equalToSuperview()
  53. // }
  54. return bgView
  55. }()
  56. lazy var uploadImageView: UIImageView = {
  57. let uploadImageView = UIImageView()
  58. uploadImageView.contentMode = .scaleAspectFit
  59. uploadImageView.cornerRadius = 12
  60. return uploadImageView
  61. }()
  62. lazy var uploadImageBgView: UIView = {
  63. let bgView = UIView()
  64. bgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action:#selector(clickBgView)))
  65. let bgImageView = UIImageView.createImageView(image: .discoverUploadBg,contentMode: .scaleToFill)
  66. bgView.addSubview(bgImageView)
  67. bgImageView.snp.makeConstraints { make in
  68. make.leading.bottom.trailing.top.equalTo(0)
  69. }
  70. bgView.addSubview(upLoadView)
  71. upLoadView.snp.makeConstraints { make in
  72. make.center.equalToSuperview()
  73. make.width.lessThanOrEqualTo(k_ScreenWidth - 96)
  74. }
  75. bgView.addSubview(uploadImageView)
  76. uploadImageView.snp.makeConstraints { make in
  77. make.top.leading.equalTo(8)
  78. make.bottom.trailing.equalTo(-8)
  79. }
  80. return bgView
  81. }()
  82. lazy var deleteBtn: UIButton = {
  83. let deleteBtn = UIButton.createButton(backgroundImage: UIImage(named: "delete_redRound")) { [weak self] in
  84. guard let self = self else { return }
  85. upLoadImage = nil
  86. }
  87. deleteBtn.isHidden = true
  88. return deleteBtn
  89. }()
  90. @objc func clickBgView() {
  91. clickBgViewBlock?()
  92. }
  93. override func creatUI() {
  94. contentView.addSubview(uploadImageBgView)
  95. uploadImageBgView.snp.makeConstraints { make in
  96. make.width.equalTo(280*kDesignScale)
  97. make.height.equalTo(280*kDesignScale)
  98. make.centerX.equalToSuperview()
  99. }
  100. contentView.addSubview(deleteBtn)
  101. deleteBtn.snp.makeConstraints { make in
  102. make.top.equalTo(0)
  103. make.trailing.equalTo(-32*kDesignScale)
  104. make.width.height.equalTo(32)
  105. }
  106. uploadImageBgView.addSubview(uploadVideoView)
  107. uploadVideoView.snp.makeConstraints { make in
  108. make.edges.equalToSuperview()
  109. }
  110. }
  111. lazy var uploadVideoView: TSUploadVideoView = {
  112. let uploadVideoView = TSUploadVideoView()
  113. uploadVideoView.clickUploadPhotoBlock = { [weak self] in
  114. guard let self = self else { return }
  115. clickBgView()
  116. }
  117. uploadVideoView.isHidden = true
  118. return uploadVideoView
  119. }()
  120. deinit {
  121. dePrint("TSUploadImageView deinit")
  122. }
  123. }