123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- //
- // TSPTPUploadImageVC+View.swift
- // AIEmoji
- //
- // Created by 100Years on 2025/6/24.
- //
- extension TSPTPUploadImageVC {
-
- func creatUploadView() -> TSUploadImageView {
- let uploadImageView = TSUploadImageView()
- uploadImageView.clickBgViewBlock = { [weak self] in
- guard let self = self else { return }
- pickSinglePhoto()
- }
- uploadImageView.clickDeleteBlock = { [weak self] in
- guard let self = self else { return }
- viewModel.upLoadImage = nil
- }
- return uploadImageView
- }
-
- func creatSelectStyleVC() -> TSGennertatorStyleVC {
- let selectStyleVC = TSGennertatorStyleVC()
- selectStyleVC.currentIndexPath = IndexPath(item: viewModel.selectedStyleIndex, section: 0)
- selectStyleVC.dataArray = viewModel.ptpStyleModels
- selectStyleVC.selectedValueBlock = { [weak self] indexPath, model in
- guard let self = self else { return }
- viewModel.selectedPTPStyleModel = model
- viewModel.selectedStyleIndex = indexPath.item
-
- setNavTitle(title: model.imageText.localized)
- selectStyleVideoHandle()
- }
-
- selectStyleVC.scrollHandle = { [weak self] scroll in
- guard let self = self else { return }
- creatBtnView.isHidden = scroll
- }
- return selectStyleVC
- }
-
- func creatCreatBtnView() -> TSAppBtnView {
- let creatBtnView = TSAppBtnView()
- let vipFreeNumType = viewModel.style.vipFreeNumType
- creatBtnView.setUpButton(style: .generate, vipFreeNumType: vipFreeNumType) { [weak self] in
- guard let self = self else { return }
- generateImage()
- }
- creatBtnView.setBtnEnabled(isEnabled: false)
- creatBtnView.isIconVipBlock = { [weak self] in
- guard let self = self else { return false }
- var showVip = kPurchaseDefault.generateVipShow(type: vipFreeNumType)
- if showVip == false,vipFreeNumType == .videoV2 {//只对视频做模型 vip 判断
- showVip = self.viewModel.selectedPTPStyleModel.isVip
- }
- return showVip
- }
- creatBtnView.isClickVipBlock = { [weak self] in
- guard let self = self else { return false }
- var isVip = kPurchaseDefault.freeNumAvailable(type: vipFreeNumType)
- if isVip == false,vipFreeNumType == .videoV2 {//只对视频做模型 vip 判断
- isVip = self.viewModel.selectedPTPStyleModel.isVip
- }
- return isVip
- }
- return creatBtnView
- }
- }
- extension TSPTPUploadImageVC {
-
- @objc func vipInfoChanged() {
- kExecuteOnMainThread {
- self.updateVipView()
- }
- }
- @objc func updateVipView() {
- kExecuteOnMainThread {
- self.creatBtnView.updateVipView()
- }
- }
- func getVipText() -> String {
- return "Generate".localized
- }
-
- func setCreatBtnEnabled() {
- let isAvailability = TSGeneratePTPOperationQueue.shared.isAvailability
- if viewModel.isCanGennerate, isAvailability {
- creatBtnView.setBtnEnabled(isEnabled: true)
- creatBtnView.loading = false
- dePrint("TSTextGeneralPicVC setCreatBtnEnabled false")
- } else {
- dePrint("TSTextGeneralPicVC setCreatBtnEnabled = \(isAvailability)")
- creatBtnView.setBtnEnabled(isEnabled: false)
- creatBtnView.loading = !isAvailability
- }
- updateVipView()
- }
- }
- extension TSPTPUploadImageVC {
-
- var isVideo:Bool{
- return viewModel.style.isVideo
- }
-
-
- func addVideoPlayLogic(){
- if isVideo{
- kMainAsync {
- self.uploadView.addVideoPlayLogic()
- self.uploadView.uploadVideoView.setVideoName(name: self.itemModel.imageNamed)
- self.uploadView.upLoadImage = self.uploadView.upLoadImage
- }
- }
- }
-
- func selectStyleVideoHandle() {
- if isVideo{
- let discoverVM:TSDiscoverViewModel = TSDiscoverViewModel()
- var array:[TSDiscoverItemModel] = discoverVM.bannerItems + discoverVM.videoEffectItems + discoverVM.aiDanceItems + discoverVM.creativeEffectItems
- let model2 = array.first(where: { discoverItemModel in
- return discoverItemModel.generateModel?.imageText == viewModel.selectedPTPStyleModel.imageText
- })
- if let discoverItemModel = model2,
- let animationItemVM = discoverItemModel.viewModel as? TSDiscoverAnimationItemVM,
- let imageNamed = animationItemVM.imageNameds.first{
- self.uploadView.uploadVideoView.setVideoName(name: imageNamed)
- if viewModel.upLoadImage == nil {
- self.uploadView.uploadVideoView.play()
- self.uploadView.uploadVideoView.touchButton.isSelected = true
- }
- }
- }
- }
-
-
- func judgeVideoImagesizeError(image:UIImage)->Bool{
- if isVideo,Self.judgeoImageSizeError(generateModel: viewModel.selectedPTPStyleModel, image: image){
- TSCustomAlertController.show(in: self, config: TSCustomAlertController.AlertConfig(
- message: "Invalid aspect ratio. Must be 1:2 to 1:1.2".localized,
- cancelTitle: "Got it".localized,
- cancelColor: .white,
- confirmTitle: ""
- ))
- return true
- }
- return false
- }
-
- //判断图片的尺寸是否错误
- static func judgeoImageSizeError(generateModel:TSGenerateModel,image:UIImage)->Bool{
- let discoverVM:TSDiscoverViewModel = TSDiscoverViewModel()
- if generateModel.imageText == discoverVM.video_Subject3.safeString(forKey: "imageText") ||
- generateModel.imageText == discoverVM.video_PUBGWinnerHit.safeString(forKey: "imageText") ||
- generateModel.imageText == discoverVM.video_MotorDance.safeString(forKey: "imageText")
- {
- let size = image.size
- if size.width/size.height < 0.5 || size.width/size.height > 0.83 {
- return true
- }
- }
- return false
- }
- }
|