TSGeneralPicVC.swift 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. //
  2. // TSGeneralPicVC.swift
  3. // AIRingtone
  4. //
  5. // Created by 100Years on 2025/3/5.
  6. //
  7. class TSGeneralPicVC: TSBottomAlertVC {
  8. var imageModel:TSActionInfoModel?
  9. var complete:((TSActionInfoModel)->Void)
  10. var aiText:String
  11. var gennerateType:TSGennerateType
  12. init(aiText: String,gennerateType:TSGennerateType,complete:@escaping ((TSActionInfoModel)->Void)) {
  13. self.aiText = aiText
  14. self.gennerateType = gennerateType
  15. self.complete = complete
  16. super.init()
  17. }
  18. lazy var viewModel: TSGenneralPicVM = {
  19. let viewModel:TSGenneralPicVM = TSGenneralPicVM()
  20. viewModel.aiText = aiText
  21. viewModel.gennerateType = gennerateType
  22. return viewModel
  23. }()
  24. lazy var contactsTool: TSContactsTool = {
  25. let contactsTool = TSContactsTool(targetVC: self)
  26. return contactsTool
  27. }()
  28. @MainActor required init?(coder: NSCoder) {
  29. fatalError("init(coder:) has not been implemented")
  30. }
  31. lazy var netWorkImageView : UIImageView = {
  32. let netWorkImageView = UIImageView.createImageView(imageName: "",corner: 12.0)
  33. return netWorkImageView
  34. }()
  35. //############################## 生成动画 ##############################
  36. lazy var generateInView : TSCommonloadingView = {
  37. let generateInView = TSCommonloadingView()
  38. generateInView.cancelBtn.addTarget(self, action: #selector(closePage), for: .touchUpInside)
  39. return generateInView
  40. }()
  41. override func createView() {
  42. super.createView()
  43. view.addSubview(generateInView)
  44. generateInView.snp.makeConstraints { make in
  45. make.top.bottom.leading.trailing.equalTo(0)
  46. }
  47. diyView.addSubview(netWorkImageView)
  48. netWorkImageView.snp.makeConstraints { make in
  49. make.top.equalTo(netWorkImageTop)
  50. make.centerX.equalToSuperview()
  51. make.size.equalTo(netWorkImageSize)
  52. }
  53. diyView.addSubview(regenerateBtn)
  54. regenerateBtn.snp.makeConstraints { make in
  55. make.top.equalTo(netWorkImageView.snp.bottom).offset(16)
  56. make.centerX.equalToSuperview()
  57. }
  58. saveBtn.setTitle(saveBtnText, for: .normal)
  59. resultIconImageView.image = resultIcon
  60. bottomViewH = 540.0
  61. bgImageView.addShadow(shadowColor: shadowColor.cgColor, shadowOffset: .zero, shadowRadius: 20, shadowOpacity: 0.8)
  62. netWorkImageView.cornerRadius = netWorkImageCorner
  63. }
  64. @objc override func closePage() {
  65. viewModel.cancelAllRequest()
  66. self.dismiss(animated: true, completion: nil)
  67. }
  68. override func clickAgainBtn() {
  69. //判断 vip
  70. if kJudgeVip(externalBool: kPurchaseDefault.freeNumAvailable(type: vipFreeNumType) == false, vc: self) {[weak self] in
  71. guard let self = self else { return }
  72. }{ return }
  73. viewModel.creatImageEmoji(text:aiText)
  74. }
  75. @objc override func clickSubmitBtn(){
  76. if let image = getSuccessImage() {
  77. if gennerateType == .poster {
  78. PhotoManagerShared.saveImageToAlbum(image) { success, error in
  79. if success {
  80. kSavePhotoSuccesswShared.show(atView:self.view)
  81. }else{
  82. debugPrint(error)
  83. }
  84. }
  85. }else if gennerateType == .photo {
  86. contactsTool.setContactsAvatar(avatarImage: image) { data, error in
  87. if error == nil {
  88. kSavePhotoSuccesswShared.show(atView: self.view,showViewBtn: false)
  89. }
  90. }
  91. }
  92. }
  93. }
  94. override func dealThings() {
  95. //判断 vip
  96. if kJudgeVip(externalBool: kPurchaseDefault.freeNumAvailable(type: vipFreeNumType) == false, vc: self) {[weak self] in
  97. guard let self = self else { return }
  98. }{ return }
  99. viewModel.creatImageEmoji(text: self.aiText)
  100. viewModel.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self] (state,model) in
  101. guard let self = self else { return }
  102. self.upDateView(state: state, model: model)
  103. }.store(in: &cancellable)
  104. }
  105. }