TSTTPInputVC.swift 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //
  2. // TSTTPInputVC.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/3/11.
  6. //
  7. class TSTTPInputVC: TSBaseVC {
  8. var viewH:CGFloat{
  9. get {
  10. if cusStackView.viewH > 0{
  11. return cusStackView.viewH
  12. }
  13. return 489.0
  14. }
  15. }
  16. var reloadUIBlock:(()->Void)?
  17. var jumpPTPBlock:(()->Void)?
  18. lazy var viewModel: TSTTPInputVM = {
  19. let viewModel:TSTTPInputVM = TSTTPInputVM()
  20. viewModel.isCanGennerateBlock = { [weak self] enabled in
  21. guard let self = self else { return }
  22. creatBtnView.setBtnEnabled(isEnabled: enabled)
  23. }
  24. return viewModel
  25. }()
  26. //###################################### cusStackView ######################################
  27. lazy var cusStackView: TSCustomStackView = {
  28. let cusStackView = TSCustomStackView(axis: .vertical,spacing: 8)
  29. cusStackView.scrollView.isScrollEnabled = false
  30. return cusStackView
  31. }()
  32. //###################################### 输入框 ######################################
  33. lazy var promptTextView: TSPromptTextView = {
  34. let promptTextView = TSPromptTextView(randomTextArray: kRandomTextArray) { [weak self] text in
  35. guard let self = self else { return }
  36. viewModel.promptText = text
  37. }
  38. promptTextView.sendBolck = { [weak self] text in
  39. guard let self = self else { return }
  40. if creatBtnView.creatBtn.isEnabled {
  41. generateImage()
  42. }
  43. }
  44. return promptTextView
  45. }()
  46. //###################################### Prompt类型 ######################################
  47. lazy var promptStyleView: TSTTPStyleView = {
  48. let promptStyleView = TSTTPStyleView()
  49. promptStyleView.dataArray = viewModel.ptpStyleModels
  50. promptStyleView.selectedValueBlock = { [weak self] model in
  51. guard let self = self else { return }
  52. viewModel.selectPromptModel = model
  53. updateVipView()
  54. }
  55. return promptStyleView
  56. }()
  57. //###################################### Button ######################################
  58. lazy var creatBtnView:TSGeneralBtnView = {
  59. let creatBtnView = TSGeneralBtnView {[weak self] in
  60. guard let self = self else { return }
  61. generateImage()
  62. }
  63. creatBtnView.setBtnEnabled(isEnabled: false)
  64. return creatBtnView
  65. }()
  66. //###################################### Generate History ######################################
  67. lazy var historyTitleView: TSTitleView = {
  68. let historyTitleView = TSTitleView()
  69. historyTitleView.titleLab.text = "Generate History".localized
  70. return historyTitleView
  71. }()
  72. override func createView() {
  73. view.backgroundColor = .clear
  74. setNavBarViewHidden(true)
  75. let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickView))
  76. tapGesture.cancelsTouchesInView = false
  77. view.addGestureRecognizer(tapGesture)
  78. contentView.addSubview(cusStackView)
  79. cusStackView.snp.makeConstraints { make in
  80. make.top.leading.bottom.trailing.equalTo(0)
  81. }
  82. cusStackView.addSubviewToStack(promptTextView)
  83. cusStackView.addSubviewToStack(promptStyleView)
  84. cusStackView.addSubviewToStack(creatBtnView)
  85. creatBtnView.snp.makeConstraints { make in
  86. make.height.equalTo(creatBtnView.viewH)
  87. make.width.equalTo(k_ScreenWidth)
  88. }
  89. }
  90. override func dealThings() {
  91. updateVipView()
  92. NotificationCenter.default.addObserver(self, selector: #selector(vipInfoChanged), name: .kPurchaseDidChanged, object: nil)
  93. }
  94. @objc func vipInfoChanged() {
  95. updateVipView()
  96. }
  97. @objc func clickView() {
  98. view.endEditing(true)
  99. }
  100. @objc func clickCollectionView() {
  101. view.endEditing(true)
  102. }
  103. func updateVipView() {
  104. kExecuteOnMainThread {
  105. var showVip = kPurchaseDefault.generateVipShow(type: .textGeneratePic)
  106. if showVip == false {
  107. showVip = self.viewModel.selectPromptModel?.isVip ?? false
  108. }
  109. kSetBtnVipIcon(btn: self.creatBtnView.creatBtn, show: showVip)
  110. }
  111. }
  112. }
  113. extension TSTTPInputVC {
  114. func generateImage() {
  115. var isVip = kPurchaseDefault.freeNumAvailable(type: .textGeneratePic) == false
  116. if viewModel.selectPromptModel?.isVip == true {
  117. isVip = true
  118. }
  119. //判断 vip
  120. if kJudgeVip(externalBool: isVip, vc: self) { [weak self] in
  121. guard let self = self else { return }
  122. }{ return }
  123. let gennerateVC = TSTextPicGennerateVC(aiText: viewModel.prompt) {[weak self] model in
  124. guard let self = self else { return }
  125. model.request.promptSort = viewModel.promptText
  126. viewModel.saveModel(model: model)
  127. updateVipView()
  128. reloadUIBlock?()
  129. }
  130. kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
  131. }
  132. }