Ver código fonte

fix:修改一批 bug

100Years 2 semanas atrás
pai
commit
0e06fba773
25 arquivos alterados com 230 adições e 63 exclusões
  1. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_aiChat.imageset/aiList_aiChat@2x.png
  2. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_aiChat.imageset/aiList_aiChat@3x.png
  3. BIN
      AIEmoji/Assets.xcassets/Discover/discover_small_shaow.imageset/discover_small_shaow@2x.png
  4. BIN
      AIEmoji/Assets.xcassets/Discover/discover_small_shaow.imageset/discover_small_shaow@3x.png
  5. 22 0
      AIEmoji/Assets.xcassets/Discover/discover_ttp.imageset/Contents.json
  6. BIN
      AIEmoji/Assets.xcassets/Discover/discover_ttp.imageset/discover_ttp@2x.png
  7. BIN
      AIEmoji/Assets.xcassets/Discover/discover_ttp.imageset/discover_ttp@3x.png
  8. 60 28
      AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel.swift
  9. 9 9
      AIEmoji/Business2/DisCover/TSDiscoverVC/Cell/TSDiscoverFullCardCell.swift
  10. 0 9
      AIEmoji/Business2/DisCover/TSDiscoverVC/Cell/TSDiscoverStyleMoreCell/TSDiscoverStyleMoreCell.swift
  11. 14 7
      AIEmoji/Business2/DisCover/TSGenerateHistoryVC/TSGenerateHistoryVC.swift
  12. 13 2
      AIEmoji/Business2/DisCover/TSGenerateHistoryVC/View/TSGenerateHistoryCell.swift
  13. 29 1
      AIEmoji/Business2/DisCover/TSGenerateHistoryVC/View/TSGennerateCellView.swift
  14. 9 5
      AIEmoji/Common/Tool/OperationQueue/V2/TSGenerateBaseOperation.swift
  15. 1 1
      AIEmoji/Common/Tool/OperationQueue/V2/TSGenerateBasePhotoOperation.swift
  16. 1 1
      AIEmoji/Common/View/TSTextToastView.swift
  17. 8 0
      AIEmoji/de.lproj/Localizable.strings
  18. 8 0
      AIEmoji/en.lproj/Localizable.strings
  19. 8 0
      AIEmoji/es.lproj/Localizable.strings
  20. 8 0
      AIEmoji/ja.lproj/Localizable.strings
  21. 8 0
      AIEmoji/ko.lproj/Localizable.strings
  22. 8 0
      AIEmoji/pt-BR.lproj/Localizable.strings
  23. 8 0
      AIEmoji/pt-PT.lproj/Localizable.strings
  24. 8 0
      AIEmoji/zh-Hans.lproj/Localizable.strings
  25. 8 0
      AIEmoji/zh-Hant.lproj/Localizable.strings

BIN
AIEmoji/Assets.xcassets/AIList/aiList_aiChat.imageset/aiList_aiChat@2x.png


BIN
AIEmoji/Assets.xcassets/AIList/aiList_aiChat.imageset/aiList_aiChat@3x.png


BIN
AIEmoji/Assets.xcassets/Discover/discover_small_shaow.imageset/discover_small_shaow@2x.png


BIN
AIEmoji/Assets.xcassets/Discover/discover_small_shaow.imageset/discover_small_shaow@3x.png


+ 22 - 0
AIEmoji/Assets.xcassets/Discover/discover_ttp.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/discover_ttp.imageset/discover_ttp@2x.png


BIN
AIEmoji/Assets.xcassets/Discover/discover_ttp.imageset/discover_ttp@3x.png


+ 60 - 28
AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel.swift

@@ -144,29 +144,28 @@ class TSDiscoverViewModel {
         return images
         return images
     }()
     }()
     
     
-    //顶部按钮功能
-    lazy var topFuncSection:TSDiscoverSectionModel = {
-        let section = TSDiscoverSectionModel()
-        section.style = .funcItems
-        section.items = [[
-//            TSDiscoverItemModel(style: .futureBaby,
-//                                viewModel: TSDiscoverBaseItemVM(title: "AI Baby", imageNamed: "discover_AIBaby"),
-//                                generateModel: TSFuncStyle.futureBaby.generateModel),
-            TSDiscoverItemModel(style: .ttp,
-                                viewModel: TSDiscoverBaseItemVM(title: "Text to Image", imageNamed: "discover_TextImage")),
-            TSDiscoverItemModel(style: .chat,
-                                viewModel: TSDiscoverBaseItemVM(title: "AI Assistant", imageNamed: "discover_AIAssistant")),
-            TSDiscoverItemModel(style: .photoQuality,
-                                viewModel: TSDiscoverBaseItemVM(title: "Enhance Photo", imageNamed: "discover_HD"),
-                                generateModel: TSFuncStyle.oldPhoto.generateModel),
-            TSDiscoverItemModel(style: .photoLive,
-                                viewModel: TSDiscoverBaseItemVM(title: "Old Photo Animation", imageNamed: "discover_PredictOld"),
-                                generateModel: TSFuncStyle.photoLive.generateModel),
-   
-            
-        ]]
-        return section
-    }()
+//    //顶部按钮功能(金刚区)
+//    lazy var topFuncSection:TSDiscoverSectionModel = {
+//        let section = TSDiscoverSectionModel()
+//        section.style = .funcItems
+//        section.items = [[
+////            TSDiscoverItemModel(style: .futureBaby,
+////                                viewModel: TSDiscoverBaseItemVM(title: "AI Baby", imageNamed: "discover_AIBaby"),
+////                                generateModel: TSFuncStyle.futureBaby.generateModel),
+//            TSDiscoverItemModel(style: .ttp,
+//                                viewModel: TSDiscoverBaseItemVM(title: "Text to Image", imageNamed: "discover_TextImage")),
+//            TSDiscoverItemModel(style: .chat,
+//                                viewModel: TSDiscoverBaseItemVM(title: "AI Assistant", imageNamed: "discover_AIAssistant")),
+//            TSDiscoverItemModel(style: .photoQuality,
+//                                viewModel: TSDiscoverBaseItemVM(title: "Enhance Photo", imageNamed: "discover_HD"),
+//                                generateModel: TSFuncStyle.oldPhoto.generateModel),
+//            TSDiscoverItemModel(style: .photoLive,
+//                                viewModel: TSDiscoverBaseItemVM(title: "Old Photo Animation", imageNamed: "discover_PredictOld"),
+//                                generateModel: TSFuncStyle.photoLive.generateModel),
+//        ]]
+//        return section
+//    }()
+
     
     
     lazy var popularStylesSection: TSDiscoverSectionModel = {
     lazy var popularStylesSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
         let section = TSDiscoverSectionModel()
@@ -366,6 +365,24 @@ class TSDiscoverViewModel {
     }()
     }()
     
     
     
     
+    
+    lazy var ttpCardSection: TSDiscoverSectionModel = {
+        let section = TSDiscoverSectionModel()
+        section.style = .fullCard
+        section.items = [
+            TSDiscoverItemModel(style: .ttp,
+                                viewModel: TSDiscoverBaseItemVM(
+                                    title: "AI ➡️ Photo".localized,
+                                    imageNamed: "discover_ttp",
+                                    info: "Turn words into visually stunning artwork".localized
+                                ),
+                                generateModel: nil),
+        ]
+        
+        return section
+    }()
+    
+    
     lazy var trendingSection: TSDiscoverSectionModel = {
     lazy var trendingSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
         let section = TSDiscoverSectionModel()
         section.style = .styleMore
         section.style = .styleMore
@@ -433,7 +450,21 @@ class TSDiscoverViewModel {
         return section
         return section
     }()
     }()
 
 
-
+    lazy var chatCardSection: TSDiscoverSectionModel = {
+        let section = TSDiscoverSectionModel()
+        section.style = .fullCard
+        section.items = [
+            TSDiscoverItemModel(style: .chat,
+                                viewModel: TSDiscoverBaseItemVM(
+                                    title: "AI Assistant".localized,
+                                    imageNamed: "aiList_aiChat",
+                                    info: "Get smart and instant answers".localized
+                                ),
+                                generateModel: nil),
+        ]
+        
+        return section
+    }()
     
     
     lazy var artFilterSection: TSDiscoverSectionModel = {
     lazy var artFilterSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
         let section = TSDiscoverSectionModel()
@@ -524,18 +555,19 @@ class TSDiscoverViewModel {
     
     
     lazy var discoverDatas: [TSDiscoverSectionModel] = {
     lazy var discoverDatas: [TSDiscoverSectionModel] = {
         return [
         return [
-            topFuncSection,
             popularStylesSection,
             popularStylesSection,
-            petToHumanSection,
+            processPhotoSection,
             figuresToysSection,
             figuresToysSection,
             babyCardSection,
             babyCardSection,
-            coolPersonalitySection,
             animeCartoonSection,
             animeCartoonSection,
+            coolPersonalitySection,
+            ttpCardSection,
             trendingSection,
             trendingSection,
-            processPhotoSection,
             artFilterSection,
             artFilterSection,
             bePrettySection,
             bePrettySection,
             oldAgeCardSection,
             oldAgeCardSection,
+            petToHumanSection,
+            chatCardSection,
         ]
         ]
     }()
     }()
     
     

+ 9 - 9
AIEmoji/Business2/DisCover/TSDiscoverVC/Cell/TSDiscoverFullCardCell.swift

@@ -22,10 +22,10 @@ class TSDiscoverFullCardCell : TSDiscoverBaseCell {
     }()
     }()
     
     
 
 
-    lazy var shadowView: UIImageView = {
-        let imageView = UIImageView.createImageView(image:.discoverBigShaow,contentMode: .scaleToFill)
-        return imageView
-    }()
+//    lazy var shadowView: UIImageView = {
+//        let imageView = UIImageView.createImageView(image:.discoverBigShaow,contentMode: .scaleToFill)
+//        return imageView
+//    }()
     
     
     lazy var textLabel: UILabel = {
     lazy var textLabel: UILabel = {
         let textLabel = UILabel.createLabel(font: .font(size: 16,weight: .semibold),textColor: .white)
         let textLabel = UILabel.createLabel(font: .font(size: 16,weight: .semibold),textColor: .white)
@@ -42,16 +42,16 @@ class TSDiscoverFullCardCell : TSDiscoverBaseCell {
         bgContentView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(clickView)))
         bgContentView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(clickView)))
         
         
         bgContentView.addSubview(imageView)
         bgContentView.addSubview(imageView)
-        bgContentView.addSubview(shadowView)
+//        bgContentView.addSubview(shadowView)
         bgContentView.addSubview(textLabel)
         bgContentView.addSubview(textLabel)
         bgContentView.addSubview(infoLabel)
         bgContentView.addSubview(infoLabel)
         imageView.snp.makeConstraints { make in
         imageView.snp.makeConstraints { make in
             make.edges.equalToSuperview()
             make.edges.equalToSuperview()
         }
         }
-        shadowView.snp.makeConstraints { make in
-            make.height.equalTo(90*kDesignScale)
-            make.leading.trailing.bottom.equalToSuperview()
-        }
+//        shadowView.snp.makeConstraints { make in
+//            make.height.equalTo(90*kDesignScale)
+//            make.leading.trailing.bottom.equalToSuperview()
+//        }
         
         
         infoLabel.snp.makeConstraints { make in
         infoLabel.snp.makeConstraints { make in
             make.leading.equalTo(16.0)
             make.leading.equalTo(16.0)

+ 0 - 9
AIEmoji/Business2/DisCover/TSDiscoverVC/Cell/TSDiscoverStyleMoreCell/TSDiscoverStyleMoreCell.swift

@@ -120,15 +120,6 @@ class TSDiscoverStyleMoreBaseCell: TSBaseCollectionCell {
             make.leading.equalTo(8)
             make.leading.equalTo(8)
             make.trailing.bottom.equalTo(-8)
             make.trailing.bottom.equalTo(-8)
         }
         }
-        
-
-        kMainAsync {
-            self.shadowView.addGradientBg(
-                colors: [UIColor.black.withAlphaComponent(0.0).cgColor,UIColor.black.withAlphaComponent(0.6).cgColor],
-                startPoint: CGPointMake(0.5, 0),
-                endPoint: CGPointMake(0.5, 1.0)
-            )
-        }
     }
     }
 }
 }
 
 

+ 14 - 7
AIEmoji/Business2/DisCover/TSGenerateHistoryVC/TSGenerateHistoryVC.swift

@@ -29,11 +29,23 @@ class TSGenerateHistoryVC: TSBaseVC {
             make.leading.equalTo(17.0)
             make.leading.equalTo(17.0)
         }
         }
         
         
+        let deleteBtn = UIButton.createButton(image: .delete) { [weak self]  in
+            guard let self = self else { return }
+            clickNavRight()
+        }
+        navBarView.barView.addSubview(deleteBtn)
+        deleteBtn.snp.makeConstraints { make in
+            make.centerY.equalToSuperview()
+            make.trailing.equalTo(-16)
+            make.width.height.equalTo(24)
+        }
+        
+        
         navBarView.barView.addSubview(vipBtn)
         navBarView.barView.addSubview(vipBtn)
         vipBtn.snp.makeConstraints { make in
         vipBtn.snp.makeConstraints { make in
             make.centerY.equalToSuperview()
             make.centerY.equalToSuperview()
-            make.trailing.equalTo(-16)
-            make.width.height.equalTo(32)
+            make.trailing.equalTo(-64)
+            make.width.height.equalTo(24)
         }
         }
         
         
         kMainAsync {
         kMainAsync {
@@ -115,11 +127,6 @@ class TSGenerateHistoryVC: TSBaseVC {
     }
     }
     
     
     @objc func updateDataView(){
     @objc func updateDataView(){
-//        dbHistory.getModelList { [weak self] array in
-//            guard let self = self else { return }
-//            listModelArray = array
-//            updateView()
-//        }
         listModelArray = dbHistory.listModels//惰性加载特性
         listModelArray = dbHistory.listModels//惰性加载特性
         updateView()
         updateView()
     }
     }

+ 13 - 2
AIEmoji/Business2/DisCover/TSGenerateHistoryVC/View/TSGenerateHistoryCell.swift

@@ -17,10 +17,15 @@ class TSGenerateHistoryCell: TSBaseCollectionCell {
                     operation.currentActionInfoModelChanged = { [weak self] actionInfoModel in
                     operation.currentActionInfoModelChanged = { [weak self] actionInfoModel in
                         guard let self = self else { return }
                         guard let self = self else { return }
                         DispatchQueue.main.async {
                         DispatchQueue.main.async {
-//                            print("actionInfoModel.toJSONString()=\(actionInfoModel.toJSONString())")
                             self.updataActionInfoModelView(model: actionInfoModel)
                             self.updataActionInfoModelView(model: actionInfoModel)
                         }
                         }
                     }
                     }
+//                    operation.stateDataPblishedChanged = { [weak self] progress,actionInfoModel in
+//                        guard let self = self else { return }
+//                        DispatchQueue.main.async {
+//                            self.updataActionInfoModelView(model: actionInfoModel)
+//                        }
+//                    }
                     self.operation = operation
                     self.operation = operation
                 }
                 }
             }else{
             }else{
@@ -166,7 +171,7 @@ extension TSGenerateHistoryCell {
         switch model.actionStatus {
         switch model.actionStatus {
         case .pending,.running:
         case .pending,.running:
             generateView.isHidden = false
             generateView.isHidden = false
-            generateView.setProgress(progress: model.percent)
+            generateView.setProgress(progress: model.percent*kPercentScale)
         case .success:
         case .success:
             generateView.isHidden = true
             generateView.isHidden = true
             videoIconImageView.isHidden = true
             videoIconImageView.isHidden = true
@@ -196,5 +201,11 @@ extension TSGenerateHistoryCell {
             }
             }
             
             
         }
         }
+        
+        if generateView.isHidden == false {
+            generateView.setBgImageViewURLString(bgImageURLString: model.request.imageUrl)
+        }else{
+            generateView.bgImageView.image = nil
+        }
     }
     }
 }
 }

+ 29 - 1
AIEmoji/Business2/DisCover/TSGenerateHistoryVC/View/TSGennerateCellView.swift

@@ -25,7 +25,10 @@ class TSGennerateCellView: TSBaseView {
         return refreshBtn
         return refreshBtn
     }()
     }()
     
     
-    
+    lazy var blurEffect: UIVisualEffectView = {
+        let blurEffect = createBlurEffectView(style: .dark)
+        return blurEffect
+    }()
 
 
     var titleTop:CGFloat = 86.0 {
     var titleTop:CGFloat = 86.0 {
         didSet{
         didSet{
@@ -35,6 +38,15 @@ class TSGennerateCellView: TSBaseView {
         }
         }
     }
     }
     
     
+    lazy var bgImageView: UIImageView = {
+        let bgImageView = UIImageView.createImageView(contentMode: .scaleAspectFill)
+        bgImageView.addSubview(blurEffect)
+        blurEffect.snp.makeConstraints { make in
+            make.edges.equalToSuperview()
+        }
+        return bgImageView
+    }()
+    
     override func creatUI() {
     override func creatUI() {
         backgroundColor = "#1D1812".uiColor
         backgroundColor = "#1D1812".uiColor
 
 
@@ -46,6 +58,12 @@ class TSGennerateCellView: TSBaseView {
 //        contentView.addGestureRecognizer(longPressRecognizer)
 //        contentView.addGestureRecognizer(longPressRecognizer)
         
         
         
         
+        contentView.addSubview(bgImageView)
+        bgImageView.snp.makeConstraints { make in
+            make.edges.equalToSuperview()
+        }
+        
+        
         contentView.addSubview(infoLabel)
         contentView.addSubview(infoLabel)
         infoLabel.snp.makeConstraints { make in
         infoLabel.snp.makeConstraints { make in
 //            make.top.equalTo(titleTop)
 //            make.top.equalTo(titleTop)
@@ -63,6 +81,16 @@ class TSGennerateCellView: TSBaseView {
         
         
     }
     }
     
     
+    func setBgImageViewURLString(bgImageURLString:String) {
+        bgImageView.image = nil
+        bgImageView.setAsyncImage(urlString: bgImageURLString, completion:  { [weak self] image in
+            guard let self = self else { return }
+            if let image = image{
+                bgImageView.image = image//TSDynamicBlurView.blurred(image: image)
+            }
+        })
+    }
+    
     func updateInfoLabelCenterY() {
     func updateInfoLabelCenterY() {
         infoLabel.snp.updateConstraints { make in
         infoLabel.snp.updateConstraints { make in
             make.centerY.equalToSuperview().offset(refreshBtn.isHidden ? 0 : -14.0)
             make.centerY.equalToSuperview().offset(refreshBtn.isHidden ? 0 : -14.0)

+ 9 - 5
AIEmoji/Common/Tool/OperationQueue/V2/TSGenerateBaseOperation.swift

@@ -57,7 +57,10 @@ class TSGenerateBaseOperation: TSBaseOperation , @unchecked Sendable{
     
     
     @Published var stateDatauPblished:(TSProgressState,TSActionInfoModel?) = (TSProgressState.none,nil){
     @Published var stateDatauPblished:(TSProgressState,TSActionInfoModel?) = (TSProgressState.none,nil){
         didSet{
         didSet{
-            dePrint("TSBaseOperation stateDatauPblished didSet = \(stateDatauPblished)")
+//            dePrint("TSBaseOperation stateDatauPblished didSet = \(stateDatauPblished)")
+
+            self.stateDataPblishedChanged?(self.stateDatauPblished.0,self.stateDatauPblished.1)
+            
             if case .start = stateDatauPblished.0 {
             if case .start = stateDatauPblished.0 {
                 start()
                 start()
             }else if stateDatauPblished.0.isResult {
             }else if stateDatauPblished.0.isResult {
@@ -84,6 +87,7 @@ class TSGenerateBaseOperation: TSBaseOperation , @unchecked Sendable{
     }
     }
     
     
     var currentActionInfoModelChanged:((TSActionInfoModel)->Void)?
     var currentActionInfoModelChanged:((TSActionInfoModel)->Void)?
+    var stateDataPblishedChanged:((TSProgressState,TSActionInfoModel?)->Void)?
     @Published var currentActionInfoModel: TSActionInfoModel = TSActionInfoModel()
     @Published var currentActionInfoModel: TSActionInfoModel = TSActionInfoModel()
     
     
     func initializeActionInfoModel(oldModel:TSActionInfoModel) {
     func initializeActionInfoModel(oldModel:TSActionInfoModel) {
@@ -227,7 +231,7 @@ class TSGenerateBaseOperation: TSBaseOperation , @unchecked Sendable{
     func downloadVideo(urlString:String,completion:@escaping (URL?)->Void){
     func downloadVideo(urlString:String,completion:@escaping (URL?)->Void){
         TSDownloadManager.getDownLoadVideo(urlString: urlString) { progress in
         TSDownloadManager.getDownLoadVideo(urlString: urlString) { progress in
             let progressInt = Int(progress*10.0)
             let progressInt = Int(progress*10.0)
-            let progressString = self.generatingText + " " + kPercentlocalized(90 + progressInt)
+            let progressString = self.generatingText + " " + kPercentlocalized(kPercentScaleInt + progressInt)
             self.stateDatauPblished = (.progressString(progressString),nil)
             self.stateDatauPblished = (.progressString(progressString),nil)
             dePrint("生成后视频下载进度: \(progress)")
             dePrint("生成后视频下载进度: \(progress)")
         } complete: { url, _ in
         } complete: { url, _ in
@@ -240,7 +244,7 @@ class TSGenerateBaseOperation: TSBaseOperation , @unchecked Sendable{
             guard let self = self else { return }
             guard let self = self else { return }
             
             
             let progressInt = Int(progress*10.0)
             let progressInt = Int(progress*10.0)
-            let progressString = self.generatingText + " " + kPercentlocalized(90 + progressInt)
+            let progressString = self.generatingText + " " + kPercentlocalized(kPercentScaleInt + progressInt)
             stateDatauPblished = (.progressString(progressString),currentActionInfoModel)
             stateDatauPblished = (.progressString(progressString),currentActionInfoModel)
             dePrint("生成后图片下载进度: \(progress)")
             dePrint("生成后图片下载进度: \(progress)")
         } completion: { image in
         } completion: { image in
@@ -276,8 +280,8 @@ class TSGenerateBaseOperation: TSBaseOperation , @unchecked Sendable{
         queryRequest?.cancel()
         queryRequest?.cancel()
     }
     }
 }
 }
-
-
+let kPercentScale:Float = 0.9 //下载进度的缩减比例
+let kPercentScaleInt:Int = 90 //下载进度的缩减比例
 func kPercentlocalized(_ num:Int)-> String{
 func kPercentlocalized(_ num:Int)-> String{
     return String(format: "%d%".localized, num)
     return String(format: "%d%".localized, num)
 }
 }

+ 1 - 1
AIEmoji/Common/Tool/OperationQueue/V2/TSGenerateBasePhotoOperation.swift

@@ -167,7 +167,7 @@ class TSGenerateBasePhotoOperation: TSGenerateBaseOperation , @unchecked Sendabl
         }
         }
     }
     }
     override func generating(progress: Float) -> String {
     override func generating(progress: Float) -> String {
-        let progress = Float(progress)*(0.9) // 预留 10% 进度给图片下载
+        let progress = Float(progress)*(kPercentScale) // 预留 10% 进度给图片下载
         //Generating 0%-100%
         //Generating 0%-100%
         var progressInt = Int(progress*100)
         var progressInt = Int(progress*100)
 
 

+ 1 - 1
AIEmoji/Common/View/TSTextToastView.swift

@@ -103,7 +103,7 @@ open class TSTextToastView {
         return bottom
         return bottom
     }
     }
     
     
-    public func show(atView:UIView,text:String = "Process successfully".localized,deadline:Double = 5.0,bottom:CGFloat = -112,showViewBtn:Bool = true,clickViewHandle:(()->Void)? = nil) {
+    public func show(atView:UIView,text:String = "1 task is processing".localized,deadline:Double = 5.0,bottom:CGFloat = -112,showViewBtn:Bool = true,clickViewHandle:(()->Void)? = nil) {
         self.clickViewHandle = clickViewHandle
         self.clickViewHandle = clickViewHandle
         kExecuteOnMainThread {
         kExecuteOnMainThread {
             self.textLabel.text = text
             self.textLabel.text = text

+ 8 - 0
AIEmoji/de.lproj/Localizable.strings

@@ -470,3 +470,11 @@
 "Magic Fairy" = "Fairy Tail";
 "Magic Fairy" = "Fairy Tail";
 "Touhou Series" = "Touhou Project";
 "Touhou Series" = "Touhou Project";
 "Recreate Photo" = "Foto neu erstellen";
 "Recreate Photo" = "Foto neu erstellen";
+
+"%d task is processing" = "%d Aufgabe wird verarbeitet";
+"New Update Available!" = "Neues Update verfügbar!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 Frische Styles, lebendiger als je zuvor";
+"✨ Trendy effects for more magic" = "✨ Trendige Effekte für mehr Magie";
+"⚡ Even faster speed" = "⚡ Noch schnellere Geschwindigkeit";
+"Update now to unlock the best experience" = "Jetzt aktualisieren, um das beste Erlebnis freizuschalten";
+"Update" = "Aktualisieren";

+ 8 - 0
AIEmoji/en.lproj/Localizable.strings

@@ -467,3 +467,11 @@
 "Magic Fairy" = "Magic Fairy";
 "Magic Fairy" = "Magic Fairy";
 "Touhou Series" = "Touhou Series";
 "Touhou Series" = "Touhou Series";
 "Recreate Photo" = "Recreate Photo";
 "Recreate Photo" = "Recreate Photo";
+
+"%d task is processing" = "%d task is processing";
+"New Update Available!" = "New Update Available!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 Fresh styles, more vibrant than ever";
+"✨ Trendy effects for more magic" = "✨ Trendy effects for more magic";
+"⚡ Even faster speed" = "⚡ Even faster speed";
+"Update now to unlock the best experience" = "Update now to unlock the best experience";
+"Update" = "Update";

+ 8 - 0
AIEmoji/es.lproj/Localizable.strings

@@ -468,3 +468,11 @@
 "Magic Fairy" = "Fairy Tail";
 "Magic Fairy" = "Fairy Tail";
 "Touhou Series" = "Touhou Project";
 "Touhou Series" = "Touhou Project";
 "Recreate Photo" = "Recrear foto";
 "Recreate Photo" = "Recrear foto";
+
+"%d task is processing" = "%d tarea está procesando";
+"New Update Available!" = "¡Nueva actualización disponible!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 Estilos nuevos, más vibrantes que nunca";
+"✨ Trendy effects for more magic" = "✨ Efectos modernos para más magia";
+"⚡ Even faster speed" = "⚡ Velocidad aún más rápida";
+"Update now to unlock the best experience" = "Actualiza ahora para disfrutar de la mejor experiencia";
+"Update" = "Actualizar";

+ 8 - 0
AIEmoji/ja.lproj/Localizable.strings

@@ -467,3 +467,11 @@
 "Magic Fairy" = "フェアリーテイル";
 "Magic Fairy" = "フェアリーテイル";
 "Touhou Series" = "東方プロジェクト";
 "Touhou Series" = "東方プロジェクト";
 "Recreate Photo" = "写真の再生成";
 "Recreate Photo" = "写真の再生成";
+
+"%d task is processing" = "%d 個のタスクを処理中";
+"New Update Available!" = "新しいアップデートが利用可能!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 新しいスタイル、これまで以上に鮮やか";
+"✨ Trendy effects for more magic" = "✨ トレンドのエフェクトでより魔法のような効果";
+"⚡ Even faster speed" = "⚡ さらに高速な処理速度";
+"Update now to unlock the best experience" = "今すぐアップデートして最高の体験を解錠";
+"Update" = "アップデート";

+ 8 - 0
AIEmoji/ko.lproj/Localizable.strings

@@ -472,3 +472,11 @@
 "Magic Fairy" = "Fairy Tail";
 "Magic Fairy" = "Fairy Tail";
 "Touhou Series" = "Touhou Project";
 "Touhou Series" = "Touhou Project";
 "Recreate Photo" = "사진 재현";
 "Recreate Photo" = "사진 재현";
+
+"%d task is processing" = "%d 작업이 처리 중입니다.";
+"New Update Available!" = "새로운 업데이트가 출시되었습니다!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 신선한 스타일, 이제보다 더 생동감 넘치는";
+"✨ Trendy effects for more magic" = "✨ 트렌디한 효과로 더 많은 마법을";
+"⚡ Even faster speed" = "⚡ 더욱 빠른 속도";
+"Update now to unlock the best experience" = "지금 업데이트하여 최고의 경험을 경험하세요";
+"Update" = "업데이트";

+ 8 - 0
AIEmoji/pt-BR.lproj/Localizable.strings

@@ -467,3 +467,11 @@
 "Magic Fairy" = "Fairy Tail";
 "Magic Fairy" = "Fairy Tail";
 "Touhou Series" = "Touhou Project";
 "Touhou Series" = "Touhou Project";
 "Recreate Photo" = "Recriar foto";
 "Recreate Photo" = "Recriar foto";
+
+"%d task is processing" = "%d tarefa em processamento";
+"New Update Available!" = "Nova atualização disponível!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 Estilos novos, mais vibrantes do que nunca";
+"✨ Trendy effects for more magic" = "✨ Efeitos modernos para mais magia";
+"⚡ Even faster speed" = "⚡ Velocidade ainda mais rápida";
+"Update now to unlock the best experience" = "Atualize agora para desbloquear a melhor experiência";
+"Update" = "Atualizar";

+ 8 - 0
AIEmoji/pt-PT.lproj/Localizable.strings

@@ -466,3 +466,11 @@
 "Magic Fairy" = "Fairy Tail";
 "Magic Fairy" = "Fairy Tail";
 "Touhou Series" = "Touhou Project";
 "Touhou Series" = "Touhou Project";
 "Recreate Photo" = "Recriar foto";
 "Recreate Photo" = "Recriar foto";
+
+"%d task is processing" = "%d tarefa em processamento";
+"New Update Available!" = "Nova atualização disponível!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 Estilos novos, mais vibrantes do que nunca";
+"✨ Trendy effects for more magic" = "✨ Efeitos modernos para mais magia";
+"⚡ Even faster speed" = "⚡ Velocidade ainda mais rápida";
+"Update now to unlock the best experience" = "Atualize agora para desbloquear a melhor experiência";
+"Update" = "Atualizar";

+ 8 - 0
AIEmoji/zh-Hans.lproj/Localizable.strings

@@ -468,3 +468,11 @@
 "Magic Fairy" = "妖精的尾巴";
 "Magic Fairy" = "妖精的尾巴";
 "Touhou Series" = "Touhou Project";
 "Touhou Series" = "Touhou Project";
 "Recreate Photo" = "重塑照片";
 "Recreate Photo" = "重塑照片";
+
+"%d task is processing" = "%d 个任务正在处理";
+"New Update Available!" = "新版本来啦!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 新风格,更鲜活";
+"✨ Trendy effects for more magic" = "✨ 时尚效果,更添魔力";
+"⚡ Even faster speed" = "⚡ 生成速度更快";
+"Update now to unlock the best experience" = "立即更新,解锁最佳体验";
+"Update" = "更新";

+ 8 - 0
AIEmoji/zh-Hant.lproj/Localizable.strings

@@ -457,3 +457,11 @@
 "Magic Fairy" = "妖精的尾巴";
 "Magic Fairy" = "妖精的尾巴";
 "Touhou Series" = "Touhou Project";
 "Touhou Series" = "Touhou Project";
 "Recreate Photo" = "重塑照片";
 "Recreate Photo" = "重塑照片";
+
+"%d task is processing" = "%d 個任務正在處理";
+"New Update Available!" = "新更新已推出!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 新風格,更鮮豔";
+"✨ Trendy effects for more magic" = "✨ 時尚效果,更添魔力";
+"⚡ Even faster speed" = "⚡ 速度更快";
+"Update now to unlock the best experience" = "立即更新,解鎖最佳體驗";
+"Update" = "更新";