瀏覽代碼

feat:3.6.17(2)1.分享按钮新布局2.修复有视频的记录不能分享问题

100Years 1 周之前
父節點
當前提交
88ce9fb013

+ 2 - 2
AIEmoji.xcodeproj/project.pbxproj

@@ -2552,7 +2552,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 2;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -2591,7 +2591,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 2;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;

+ 22 - 0
AIEmoji/Assets.xcassets/Common/ic_regenerate.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_regenerate@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "ic_regenerate@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
AIEmoji/Assets.xcassets/Common/ic_regenerate.imageset/ic_regenerate@2x.png


二進制
AIEmoji/Assets.xcassets/Common/ic_regenerate.imageset/ic_regenerate@3x.png


+ 22 - 0
AIEmoji/Assets.xcassets/Common/share.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "share@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "share@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
AIEmoji/Assets.xcassets/Common/share.imageset/share@2x.png


二進制
AIEmoji/Assets.xcassets/Common/share.imageset/share@3x.png


+ 18 - 15
AIEmoji/Business/TSAILIstVC/TSAIPhotoGeneratorBaseVC/TSAIListPhotoGeneratorBaseVC.swift

@@ -110,14 +110,6 @@ class TSAIListPhotoGeneratorBaseVC: TSAIPhotoGeneratorBaseVC {
         return rotatingPictureBtn
     }()
     
-    lazy var shareBtn: UIButton = {
-        let deleteBtn = UIButton.createButton(image: .icShare) { [weak self]  in
-            guard let self = self else { return }
-            guard let image = getSuccessImage() else { return }
-            kShareImage(target: self, image: image)
-        }
-        return deleteBtn
-    }()
     
     override func createView() {
 
@@ -150,13 +142,7 @@ class TSAIListPhotoGeneratorBaseVC: TSAIPhotoGeneratorBaseVC {
             setUpExpandAreaView()
         }
         
-        contentView.addSubview(shareBtn)
-        shareBtn.snp.makeConstraints { make in
-            make.top.equalTo(k_Height_StatusBar + 4)
-            make.trailing.equalTo(-16)
-            make.width.equalTo(36)
-            make.height.equalTo(36)
-        }
+
         contentView.isHidden = true
     }
     
@@ -279,6 +265,23 @@ class TSAIListPhotoGeneratorBaseVC: TSAIPhotoGeneratorBaseVC {
         }
     }
     
+    override func clickShare() {
+        guard let imageModel = imageModel else { return }
+        if viewModel.generatorModel.generatorStyle == .photoLive{
+            TSDownloadManager.getDownLoadVideo(urlString: imageModel.response.resultUrl) { url, success in
+                if let url = url {
+                    kShareContent(target: self, anyData: url)
+                }
+            }
+        }else{
+            UIImageView.downloadImageWithProgress(urlString: imageModel.response.resultUrl) { image in
+                if let image = image {
+                    kShareContent(target: self, anyData: image)
+                }
+            }
+        }
+    }
+    
     override func dealThings() {
         viewModel.uploadAndCreatImage()
         viewModel.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in

+ 87 - 22
AIEmoji/Business/TSPTPGeneratorVC/TSAIPhotoGeneratorBaseVC/TSAIPhotoBrowseVC.swift

@@ -59,6 +59,34 @@ class TSAIPhotoBrowseVC: TSBaseVC {
         return collectionView
     }()
 
+    lazy var bottomViewH = 60+k_Height_safeAreaInsetsBottom()
+    lazy var bottomView: UIView = {
+        let bottom = 60+k_Height_safeAreaInsetsBottom()
+        let bottomView = UIView(frame: CGRectMake(0, k_ScreenHeight-bottomViewH, k_ScreenWidth, bottomViewH))
+        bottomView.backgroundColor = "#111111".uiColor
+        
+        let colorView = UIView.creatColor(color: "#222222".uiColor)
+        colorView.frame = bottomView.bounds
+        colorView.cornersRound(radius: 20, corner: [.topLeft,.topRight])
+        bottomView.addSubview(colorView)
+
+        return bottomView
+    }()
+    
+    //左边分享按钮
+    lazy var shareBtn: TSVerticalButton = {
+        let shareBtn = TSVerticalButton()
+        shareBtn.setUpButton(title: "Share".localized,
+                                  image: UIImage(named: "share"),
+                                  font: .font(size: 11),
+                                  titleColor: .white.withAlphaComponent(0.8)){ [weak self]  in
+            guard let self = self else { return }
+            clickShare()
+        }
+        shareBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)
+        return shareBtn
+    }()
+    
     //保存按钮
     lazy var bigSaveBtn: UIButton = {
         let bigSaveBtn = kCreateNormalSubmitBtn(title: "Save".localized) { [weak self]  in
@@ -99,15 +127,7 @@ class TSAIPhotoBrowseVC: TSBaseVC {
     }()
     
     
-    lazy var shareBtn: UIButton = {
-        let deleteBtn = UIButton.createButton(image: .icShare) { [weak self]  in
-            guard let self = self else { return }
-            guard let image = currentImage else { return }
-            kShareImage(target: self, image: image)
-        }
-        return deleteBtn
-    }()
-    
+
     
     override func createView() {
         super.createView()
@@ -130,13 +150,20 @@ class TSAIPhotoBrowseVC: TSBaseVC {
         }
         
 
-        contentView.addSubview(bigSaveBtn)
-        bigSaveBtn.snp.makeConstraints { make in
-            make.centerX.equalToSuperview()
-            make.bottom.equalTo(-8-k_Height_safeAreaInsetsBottom())
-            make.width.equalTo(bigSaveBtn.width)
-            make.height.equalTo(bigSaveBtn.height)
-        }
+//        contentView.addSubview(bigSaveBtn)
+//        bigSaveBtn.snp.makeConstraints { make in
+//            make.centerX.equalToSuperview()
+//            make.bottom.equalTo(-8-k_Height_safeAreaInsetsBottom())
+//            make.width.equalTo(bigSaveBtn.width)
+//            make.height.equalTo(bigSaveBtn.height)
+//        }
+        //        contentView.addSubview(shareBtn)
+        //        shareBtn.snp.makeConstraints { make in
+        //            make.top.equalTo(k_Height_StatusBar + 4)
+        //            make.trailing.equalTo(-16)
+        //            make.width.equalTo(36)
+        //            make.height.equalTo(36)
+        //        }
         
         //关闭按钮
         contentView.addSubview(xBtn)
@@ -150,17 +177,30 @@ class TSAIPhotoBrowseVC: TSBaseVC {
         contentView.addSubview(deleteBtn)
         deleteBtn.snp.makeConstraints { make in
             make.top.equalTo(k_Height_StatusBar + 4)
-            make.trailing.equalTo(-75)
+            make.trailing.equalTo(-16)
             make.width.equalTo(36)
             make.height.equalTo(36)
         }
         
-        contentView.addSubview(shareBtn)
-        shareBtn.snp.makeConstraints { make in
-            make.top.equalTo(k_Height_StatusBar + 4)
+
+        
+        let bottomBtnTop:CGFloat = 8.0
+        contentView.addSubview(bottomView)
+        bottomView.addSubview(bigSaveBtn)
+        bigSaveBtn.snp.makeConstraints { make in
+            make.top.equalTo(bottomBtnTop)
             make.trailing.equalTo(-16)
-            make.width.equalTo(36)
-            make.height.equalTo(36)
+            make.width.equalTo(252*kDesignScale)
+            make.height.equalTo(44)
+        }
+        
+        bottomView.addSubview(shareBtn)
+        shareBtn.snp.makeConstraints { make in
+            make.top.equalTo(bottomBtnTop)
+            make.leading.equalTo(16)
+//            make.width.equalTo(86)
+            make.width.equalTo(shareBtn.intrinsicContentSize.width)
+            make.height.equalTo(44)
         }
         
     }
@@ -223,6 +263,31 @@ class TSAIPhotoBrowseVC: TSBaseVC {
     @objc func clickXBtn(){
         pop()
     }
+    
+    func clickShare() {
+//        guard let image = currentImage else { return }
+//        kShareContent(target: self, anyData: image)
+        
+        guard let currentModel = currentModel else { return }
+        let urlString = currentModel.response.resultUrl
+        if currentModel.isVideo {
+            TSDownloadManager.getDownLoadVideo(urlString: urlString) { url, _ in
+                if let url = url {
+                    kShareContent(target: self, anyData: url)
+                }
+            }
+        }else{
+            UIImageView.downloadImageWithProgress(urlString: urlString) { image in
+                if let image = image{
+                    kShareContent(target: self, anyData: image)
+                }else{//如果服务器取不到,直接保存当前显示的图片
+                    if let currentImage = self.currentImage {
+                        kShareContent(target: self, anyData: currentImage)
+                    }
+                }
+            }
+        }
+    }
 }
 
 

+ 33 - 15
AIEmoji/Business/TSPTPGeneratorVC/TSAIPhotoGeneratorBaseVC/TSAIPhotoGeneratorBaseVC.swift

@@ -61,18 +61,26 @@ class TSAIPhotoGeneratorBaseVC: TSBaseVC {
         return tryAgainBtn
     }()
     
-    //左边重新生成按钮
-    lazy var regenerateBtn: TSVerticalButton = {
-        let regenerateBtn = TSVerticalButton()
-        regenerateBtn.setUpButton(title: "Regenerate".localized,
-                                  image: UIImage(named: "refresh_gary"),
+    lazy var regenerateBtn: UIButton = {
+        let Btn = UIButton.createButton(image: .icRegenerate) { [weak self]  in
+            guard let self = self else { return }
+            clickTryAgainBtn()
+        }
+        return Btn
+    }()
+    
+    //左边分享按钮
+    lazy var shareBtn: TSVerticalButton = {
+        let shareBtn = TSVerticalButton()
+        shareBtn.setUpButton(title: "Share".localized,
+                                  image: UIImage(named: "share"),
                                   font: .font(size: 11),
                                   titleColor: .white.withAlphaComponent(0.8)){ [weak self]  in
             guard let self = self else { return }
-            clickRegenerateBtn()
+            clickShare()
         }
-//        regenerateBtn.titleLabel?.numberOfLines = 0
-        return regenerateBtn
+        shareBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)
+        return shareBtn
     }()
 
     
@@ -104,7 +112,14 @@ class TSAIPhotoGeneratorBaseVC: TSBaseVC {
             make.width.equalTo(36)
             make.height.equalTo(36)
         }
-        
+        contentView.addSubview(regenerateBtn)
+        regenerateBtn.snp.makeConstraints { make in
+            make.top.equalTo(k_Height_StatusBar + 4)
+            make.trailing.equalTo(-16)
+            make.width.equalTo(36)
+            make.height.equalTo(36)
+        }
+
         let bottomBtnTop:CGFloat = 8.0
         //重试
         bottomView.addSubview(tryAgainBtn)
@@ -119,17 +134,16 @@ class TSAIPhotoGeneratorBaseVC: TSBaseVC {
         bigSaveBtn.snp.makeConstraints { make in
             make.top.equalTo(bottomBtnTop)
             make.trailing.equalTo(-16)
-            make.width.equalTo(252)
+            make.width.equalTo(252*kDesignScale)
             make.height.equalTo(44)
         }
-        
-        //重新生成
-        bottomView.addSubview(regenerateBtn)
-        regenerateBtn.snp.makeConstraints { make in
+        //share
+        bottomView.addSubview(shareBtn)
+        shareBtn.snp.makeConstraints { make in
             make.top.equalTo(bottomBtnTop)
             make.leading.equalTo(16)
 //            make.width.equalTo(86)
-            make.width.equalTo(regenerateBtn.intrinsicContentSize.width)
+            make.width.equalTo(shareBtn.intrinsicContentSize.width)
             make.height.equalTo(44)
         }
         
@@ -152,6 +166,10 @@ class TSAIPhotoGeneratorBaseVC: TSBaseVC {
         
     }
     
+    @objc func clickShare(){
+        
+    }
+    
     @objc func clickXBtn(){
         closePage()
     }

+ 10 - 21
AIEmoji/Business/TSPTPGeneratorVC/TSPTPGeneratorVC/TSPTPGeneratorVC.swift

@@ -75,18 +75,9 @@ class TSPTPGeneratorVC: TSAIPhotoGeneratorBaseVC {
                 }
             }
         }
-        rotatingPictureBtn.isHidden = true
         return rotatingPictureBtn
     }()
     
-    lazy var shareBtn: UIButton = {
-        let deleteBtn = UIButton.createButton(image: .icShare) { [weak self]  in
-            guard let self = self else { return }
-            guard let image = getSuccessImage() else { return }
-            kShareImage(target: self, image: image)
-        }
-        return deleteBtn
-    }()
     
     override func createView() {
 
@@ -105,13 +96,6 @@ class TSPTPGeneratorVC: TSAIPhotoGeneratorBaseVC {
             make.height.equalTo(40)
         }
         
-        contentView.addSubview(shareBtn)
-        shareBtn.snp.makeConstraints { make in
-            make.top.equalTo(k_Height_StatusBar + 4)
-            make.trailing.equalTo(-16)
-            make.width.equalTo(36)
-            make.height.equalTo(36)
-        }
         
         contentView.isHidden = true
     }
@@ -199,7 +183,10 @@ class TSPTPGeneratorVC: TSAIPhotoGeneratorBaseVC {
             }
         }
     }
-    
+    override func clickShare() {
+        guard let image = getSuccessImage() else { return }
+        kShareContent(target: self, anyData: image)
+    }
     override func dealThings() {
         creatImage()
     }
@@ -306,6 +293,7 @@ extension TSPTPGeneratorVC {
     func showProgress(text:String) {
         generateInView.updateShowProgress(text: text)
         contentView.isHidden = true
+        
 //        isClickTheBlankClosePage = false
 //        bottomView.isHidden = true
 //        netWorkImageView.isHidden = true
@@ -315,6 +303,7 @@ extension TSPTPGeneratorVC {
     func showLoading(){
         generateInView.updateShowLoading(text: "Generating".localized + " ...")
         contentView.isHidden = true
+        
 //        isClickTheBlankClosePage = false
 //        bottomView.isHidden = true
 //        netWorkImageView.isHidden = true
@@ -324,9 +313,9 @@ extension TSPTPGeneratorVC {
     func showError(text:String,code:Int = 0){
         generateInView.updateShowError(text: text,code: code)
         contentView.isHidden = true
-//        isClickTheBlankClosePage = true
-//        
         xBtn.isHidden = false
+        
+//        isClickTheBlankClosePage = true
 //        tryAgainBtn.isHidden = true
 //        bigSaveBtn.isHidden = true
 //        bottomView.isHidden = true
@@ -337,9 +326,9 @@ extension TSPTPGeneratorVC {
     func showSuccess(model:TSActionInfoModel){
         generateInView.updateShowSuccess()
         contentView.isHidden = false
-//        isClickTheBlankClosePage = true
-//        
         xBtn.isHidden = false
+        
+//        isClickTheBlankClosePage = true
 //        tryAgainBtn.isHidden = false
 //        bigSaveBtn.isHidden = false
 //        bottomView.isHidden = false

+ 7 - 16
AIEmoji/Business/TSTextGeneralPictureVC/TSTextPicGennerateVC/TSTextPicGennerateVC.swift

@@ -40,15 +40,7 @@ class TSTextPicGennerateVC: TSAIPhotoGeneratorBaseVC {
         }
         return generateInView
     }()
-    
-    lazy var shareBtn: UIButton = {
-        let deleteBtn = UIButton.createButton(image: .icShare) { [weak self]  in
-            guard let self = self else { return }
-            guard let image = getSuccessImage() else { return }
-            kShareImage(target: self, image: image)
-        }
-        return deleteBtn
-    }()
+
     
     override func createView() {
 
@@ -59,13 +51,7 @@ class TSTextPicGennerateVC: TSAIPhotoGeneratorBaseVC {
         
         super.createView()
 
-        contentView.addSubview(shareBtn)
-        shareBtn.snp.makeConstraints { make in
-            make.top.equalTo(k_Height_StatusBar + 4)
-            make.trailing.equalTo(-16)
-            make.width.equalTo(36)
-            make.height.equalTo(36)
-        }
+
         
         contentView.isHidden = true
     }
@@ -131,6 +117,11 @@ class TSTextPicGennerateVC: TSAIPhotoGeneratorBaseVC {
         }
     }
     
+    override func clickShare() {
+        guard let image = getSuccessImage() else { return }
+        kShareContent(target: self, anyData: image)
+    }
+    
     override func dealThings() {
         viewModel.creatImageEmoji()
         viewModel.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in

+ 6 - 6
AIEmoji/Common/Tool/TSCommonTool/TSCommonTool.swift

@@ -226,10 +226,10 @@ let kAppName:String = "Chibii" //Picguru Chibii Chibi Ghiblii AI Image Picguru
 let kUploadImageMaxBit10Size:Int = 10 * 1024 * 1024 //10M
 let kUploadImageMaxBit5Size:Int = 5 * 1024 * 1024 //5M
 
-func kShareImage(target: UIViewController,image:UIImage) {
+func kShareContent(target: UIViewController,anyData:Any) {
     
     let text = "Turn yourself into a Ghibli style with AI magic! 🎨✨ This app creates stunning anime, cyberpunk & more—just upload a photo. Try it now!"
-    kShareContent(target: target, image: image, text: text)
+    kShareContent(target: target, anyData: anyData, text: text)
     
 //    shareApplication(target: target)
 }
@@ -261,8 +261,8 @@ func kShareImage(target: UIViewController,image:UIImage) {
 //    target.present(vc, animated: true)
 //}
 
-func kShareContent(target: UIViewController,image:UIImage?,text:String?) {
-//    
+func kShareContent(target: UIViewController,anyData:Any?,text:String?) {
+//
 //    let url = URL(string: "https://apps.apple.com/app/id\(appid)")
 //    ShareHelper.share(
 //        image: image,
@@ -275,8 +275,8 @@ func kShareContent(target: UIViewController,image:UIImage?,text:String?) {
     let urlString = "https://apps.apple.com/app/id\(appid)"
     var activityItems:[Any] = []
 
-    if let image = image {
-        activityItems.append(image)
+    if let anyData = anyData {
+        activityItems.append(anyData)
     }
     
     if let text = text {