TSAIListHintBaseVC.swift 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. //
  2. // TSAIListHintBaseVC.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/4/9.
  6. //
  7. import PhotosUI
  8. class TSAIListHintBaseVC: TSBaseVC {
  9. static var userDefaultsKey:String = "isFirstAIListAge"
  10. var goodImageNamed:String = "ptp_goodImage"
  11. var badImageNamed:String = "ptp_badImage"
  12. let popupContentViewW:CGFloat = k_ScreenWidth - 40.0
  13. let popupContentViewH:CGFloat = k_ScreenHeight - 268.0
  14. var clickUpImageHandle:((UIImage?,PHAsset?)->Void)?
  15. lazy var popupContentView: UIView = {
  16. let popupContentView = UIView(frame: CGRectMake(0, 0, popupContentViewW, popupContentViewH))
  17. popupContentView.backgroundColor = "#222222".uiColor
  18. popupContentView.cornerRadius = 20.0
  19. return popupContentView
  20. }()
  21. lazy var photoPickerManager: TSPhotoPickerManager = {
  22. let photoPickerManager = TSPhotoPickerManager(viewController: self)
  23. return photoPickerManager
  24. }()
  25. // lazy var noPromptsBtn: UIButton = {
  26. // let noPromptsBtn = UIButton.createButton(title: "Do not show again".localized,image: UIImage(named: "circle_unSelected"),font: .font(size: 11),titleColor: .white.withAlphaComponent(0.6)){ [weak self] in
  27. // guard let self = self else { return }
  28. // changeNoPromptsBtn()
  29. // }
  30. // noPromptsBtn.setImage(UIImage(named: "circle_selected"), for: .selected)
  31. // noPromptsBtn.setTitleImageSpace(spacing: 6)
  32. // return noPromptsBtn
  33. // }()
  34. override func createView() {
  35. setNavBarViewHidden(true)
  36. view.backgroundColor = .black.withAlphaComponent(0.7)
  37. view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(clickView)))
  38. contentView.addSubview(popupContentView)
  39. popupContentView.center = view.center
  40. popupContentView.snp.makeConstraints { make in
  41. make.leading.equalTo(20)
  42. make.trailing.equalTo(-20)
  43. make.center.equalToSuperview()
  44. }
  45. setUpUI()
  46. }
  47. @objc func clickView() {
  48. dismiss()
  49. }
  50. func setUpUI(){
  51. let titleLabel = UILabel.createLabel(text: "Upload your photos".localized,font: .font(size: 18,weight: .semibold),textColor: .white,numberOfLines: 0)
  52. popupContentView.addSubview(titleLabel)
  53. titleLabel.snp.makeConstraints { make in
  54. make.leading.top.equalTo(32)
  55. make.trailing.equalTo(-32)
  56. }
  57. let goodLabel = UILabel.createLabel(text: "Good photo examples".localized,font: .font(size: 14,weight: .medium),textColor: .white,numberOfLines: 0)
  58. popupContentView.addSubview(goodLabel)
  59. goodLabel.snp.makeConstraints { make in
  60. make.top.equalTo(titleLabel.snp.bottom).offset(28)
  61. make.leading.equalTo(32)
  62. make.trailing.equalTo(-32)
  63. }
  64. let goodInfoLabel = UILabel.createLabel(text: "Fully clear and visible face, in good lighting".localized,font: .font(size: 14,weight: .medium),textColor: .white.withAlphaComponent(0.6),numberOfLines: 0)
  65. popupContentView.addSubview(goodInfoLabel)
  66. goodInfoLabel.snp.makeConstraints { make in
  67. make.top.equalTo(goodLabel.snp.bottom).offset(8)
  68. make.leading.equalTo(32)
  69. make.trailing.equalTo(-32)
  70. }
  71. let goodImageView = UIImageView.createImageView(imageName: goodImageNamed)
  72. popupContentView.addSubview(goodImageView)
  73. goodImageView.snp.makeConstraints { make in
  74. make.top.equalTo(goodInfoLabel.snp.bottom).offset(12)
  75. make.leading.equalTo(32)
  76. make.trailing.equalTo(-32)
  77. make.height.equalTo(108*kDesignScale)
  78. }
  79. let badLabel = UILabel.createLabel(text: "Bad photo examples".localized,font: .font(size: 14,weight: .medium),textColor: .white,numberOfLines: 0)
  80. popupContentView.addSubview(badLabel)
  81. badLabel.snp.makeConstraints { make in
  82. make.top.equalTo(goodImageView.snp.bottom).offset(28)
  83. make.leading.equalTo(32)
  84. make.trailing.equalTo(-32)
  85. }
  86. let badInfoLabel = UILabel.createLabel(text: "Group photos, covered faces, nudes".localized,font: .font(size: 14,weight: .medium),textColor: .white.withAlphaComponent(0.6),numberOfLines: 0)
  87. popupContentView.addSubview(badInfoLabel)
  88. badInfoLabel.snp.makeConstraints { make in
  89. make.top.equalTo(badLabel.snp.bottom).offset(8)
  90. make.leading.equalTo(32)
  91. make.trailing.equalTo(-32)
  92. }
  93. let badImageView = UIImageView.createImageView(imageName: badImageNamed)
  94. popupContentView.addSubview(badImageView)
  95. badImageView.snp.makeConstraints { make in
  96. make.top.equalTo(badInfoLabel.snp.bottom).offset(12)
  97. make.leading.equalTo(32)
  98. make.trailing.equalTo(-32)
  99. make.height.equalTo(108*kDesignScale)
  100. }
  101. let submitBtn = kCreateNormalSubmitBtn(title: "Upload Photo".localized) { [weak self] in
  102. guard let self = self else { return }
  103. pickSinglePhoto()
  104. }
  105. submitBtn.cornerRadius = 24.0
  106. popupContentView.addSubview(submitBtn)
  107. submitBtn.snp.makeConstraints { make in
  108. make.top.equalTo(badImageView.snp.bottom).offset(35)
  109. make.centerX.equalToSuperview()
  110. make.width.equalTo(250*kDesignScale)
  111. make.height.equalTo(48)
  112. make.bottom.equalTo(-24)
  113. }
  114. // popupContentView.addSubview(noPromptsBtn)
  115. // noPromptsBtn.snp.makeConstraints { make in
  116. // make.top.equalTo(submitBtn.snp.bottom).offset(12)
  117. // make.centerX.equalToSuperview()
  118. // make.height.equalTo(16)
  119. // make.bottom.equalTo(-24)
  120. // }
  121. }
  122. // func changeNoPromptsBtn(){
  123. // noPromptsBtn.isSelected = !noPromptsBtn.isSelected
  124. // Self.isShowUploadImageHint = !noPromptsBtn.isSelected
  125. // }
  126. static var isShowUploadImageHint:Bool{
  127. get {
  128. return UserDefaults.standard.string(forKey: userDefaultsKey) == nil
  129. }
  130. set {
  131. UserDefaults.standard.set(newValue ? nil : "1", forKey: userDefaultsKey)
  132. UserDefaults.standard.synchronize()
  133. }
  134. }
  135. func pickSinglePhoto() {
  136. photoPickerManager.pickSinglePhoto { [weak self] image,phAsset in
  137. guard let self = self else { return }
  138. dismiss()
  139. clickUpImageHandle?(image,phAsset)
  140. }
  141. }
  142. }