123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- //
- // TSTTPInputVC.swift
- // AIEmoji
- //
- // Created by 100Years on 2025/3/11.
- //
- class TSTTPInputVC: TSBaseVC {
-
- var viewH:CGFloat{
- get {
- if cusStackView.viewH > 0{
- return cusStackView.viewH
- }
- return 489.0
- }
- }
-
- var reloadUIBlock:(()->Void)?
- var jumpPTPBlock:(()->Void)?
- lazy var viewModel: TSTTPInputVM = {
- let viewModel:TSTTPInputVM = TSTTPInputVM()
- viewModel.isCanGennerateBlock = { [weak self] enabled in
- guard let self = self else { return }
- creatBtnView.setBtnEnabled(isEnabled: enabled)
- }
- return viewModel
- }()
-
- //###################################### cusStackView ######################################
- lazy var cusStackView: TSCustomStackView = {
- let cusStackView = TSCustomStackView(axis: .vertical,spacing: 8)
- cusStackView.scrollView.isScrollEnabled = false
- return cusStackView
- }()
-
- //###################################### 输入框 ######################################
- lazy var promptTextView: TSPromptTextView = {
- let promptTextView = TSPromptTextView(randomTextArray: kRandomTextArray) { [weak self] text in
- guard let self = self else { return }
- viewModel.promptText = text
- }
- promptTextView.sendBolck = { [weak self] text in
- guard let self = self else { return }
- if creatBtnView.creatBtn.isEnabled {
- generateImage()
- }
- }
- return promptTextView
- }()
-
- //###################################### Prompt类型 ######################################
- lazy var promptStyleView: TSTTPStyleView = {
- let promptStyleView = TSTTPStyleView()
- promptStyleView.dataArray = viewModel.ptpStyleModels
- promptStyleView.selectedValueBlock = { [weak self] model in
- guard let self = self else { return }
- viewModel.selectPromptModel = model
- updateVipView()
- }
- return promptStyleView
- }()
-
-
- //###################################### Button ######################################
- lazy var creatBtnView:TSGeneralBtnView = {
- let creatBtnView = TSGeneralBtnView {[weak self] in
- guard let self = self else { return }
- generateImage()
- }
- creatBtnView.setBtnEnabled(isEnabled: false)
- return creatBtnView
- }()
-
- //###################################### Generate History ######################################
- lazy var historyTitleView: TSTitleView = {
- let historyTitleView = TSTitleView()
- historyTitleView.titleLab.text = "Generate History".localized
- return historyTitleView
- }()
-
- override func createView() {
- view.backgroundColor = .clear
-
- setNavBarViewHidden(true)
-
- let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickView))
- tapGesture.cancelsTouchesInView = false
- view.addGestureRecognizer(tapGesture)
-
- contentView.addSubview(cusStackView)
- cusStackView.snp.makeConstraints { make in
- make.top.leading.bottom.trailing.equalTo(0)
- }
- cusStackView.addSubviewToStack(promptTextView)
-
- cusStackView.addSubviewToStack(promptStyleView)
- cusStackView.addSubviewToStack(creatBtnView)
- creatBtnView.snp.makeConstraints { make in
- make.height.equalTo(creatBtnView.viewH)
- make.width.equalTo(k_ScreenWidth)
- }
- }
-
- override func dealThings() {
- updateVipView()
- NotificationCenter.default.addObserver(self, selector: #selector(vipInfoChanged), name: .kPurchaseDidChanged, object: nil)
- }
-
- @objc func vipInfoChanged() {
- updateVipView()
- }
-
- @objc func clickView() {
- view.endEditing(true)
- }
- @objc func clickCollectionView() {
- view.endEditing(true)
- }
-
- func updateVipView() {
- kExecuteOnMainThread {
- var showVip = kPurchaseDefault.generateVipShow(type: .textGeneratePic)
- if showVip == false {
- showVip = self.viewModel.selectPromptModel?.isVip ?? false
- }
- kSetBtnVipIcon(btn: self.creatBtnView.creatBtn, show: showVip)
- }
- }
-
- }
- extension TSTTPInputVC {
- func generateImage() {
- var isVip = kPurchaseDefault.freeNumAvailable(type: .textGeneratePic) == false
- if viewModel.selectPromptModel?.isVip == true {
- isVip = true
- }
-
- //判断 vip
- if kJudgeVip(externalBool: isVip, vc: self) { [weak self] in
- guard let self = self else { return }
- }{ return }
-
- let gennerateVC = TSTextPicGennerateVC(aiText: viewModel.prompt) {[weak self] model in
- guard let self = self else { return }
- model.request.promptSort = viewModel.promptText
- viewModel.saveModel(model: model)
- updateVipView()
- reloadUIBlock?()
- }
-
- kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
- }
- }
|