Selaa lähdekoodia

feat:
1.增加新的动漫风格
2.更换优惠订阅周商品 ID
3.AI baby 更换 apng动画效果

100Years 2 viikkoa sitten
vanhempi
commit
06dde61b95
46 muutettua tiedostoa jossa 357 lisäystä ja 40 poistoa
  1. 6 2
      AIEmoji.xcodeproj/project.pbxproj
  2. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_BlytheDoll.imageset/Contents.json
  3. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_BlytheDoll.imageset/discover_0_BlytheDoll@2x.png
  4. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_BlytheDoll.imageset/discover_0_BlytheDoll@3x.png
  5. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_Caricature.imageset/Contents.json
  6. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_Caricature.imageset/discover_0_Caricature@2x.png
  7. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_Caricature.imageset/discover_0_Caricature@3x.png
  8. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_FreshWatercolor.imageset/Contents.json
  9. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_FreshWatercolor.imageset/discover_0_FreshWatercolor@2x.png
  10. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_FreshWatercolor.imageset/discover_0_FreshWatercolor@3x.png
  11. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_BlytheDoll.imageset/Contents.json
  12. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_BlytheDoll.imageset/discover_1_BlytheDoll@2x.png
  13. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_BlytheDoll.imageset/discover_1_BlytheDoll@3x.png
  14. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_Caricature.imageset/Contents.json
  15. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_Caricature.imageset/discover_1_Caricature@2x.png
  16. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_Caricature.imageset/discover_1_Caricature@3x.png
  17. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_FreshWatercolor.imageset/Contents.json
  18. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_FreshWatercolor.imageset/discover_1_FreshWatercolor@2x.png
  19. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_FreshWatercolor.imageset/discover_1_FreshWatercolor@3x.png
  20. 22 0
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_BlytheDoll.imageset/Contents.json
  21. BIN
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_BlytheDoll.imageset/ptp_style_BlytheDoll@2x.png
  22. BIN
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_BlytheDoll.imageset/ptp_style_BlytheDoll@3x.png
  23. 22 0
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_Caricature.imageset/Contents.json
  24. BIN
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_Caricature.imageset/ptp_style_Caricature@2x.png
  25. BIN
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_Caricature.imageset/ptp_style_Caricature@3x.png
  26. 22 0
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_FreshWatercolor.imageset/Contents.json
  27. BIN
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_FreshWatercolor.imageset/ptp_style_FreshWatercolor@2x.png
  28. BIN
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_FreshWatercolor.imageset/ptp_style_FreshWatercolor@3x.png
  29. 9 4
      AIEmoji/Business/TSPurchaseMembershipVC/TSPurchasePromotionalVC/TSPurchasePromotionalCountDownTime.swift
  30. 6 4
      AIEmoji/Business/TSPurchaseMembershipVC/TSPurchasePromotionalVC/TSPurchasePromotionalVC.swift
  31. 45 0
      AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel+Dic.swift
  32. 31 15
      AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel.swift
  33. 26 11
      AIEmoji/Business2/DisCover/TSDiscoverVC/Cell/TSDiscoverFullCardCell.swift
  34. 1 1
      AIEmoji/Business2/DisCover/TSDiscoverVC/Cell/TSDiscoverStyleMoreCell/TSDiscoverStyleMoreCell.swift
  35. 2 2
      AIEmoji/Common/Purchase/TSPurchaseManager.swift
  36. 5 1
      AIEmoji/Common/Tool/TSCommonTool/TSCommonTool.swift
  37. BIN
      AIEmoji/Res/animated_aiBaby.apng
  38. 3 0
      AIEmoji/de.lproj/Localizable.strings
  39. 3 0
      AIEmoji/en.lproj/Localizable.strings
  40. 3 0
      AIEmoji/es.lproj/Localizable.strings
  41. 3 0
      AIEmoji/ja.lproj/Localizable.strings
  42. 3 0
      AIEmoji/ko.lproj/Localizable.strings
  43. 3 0
      AIEmoji/pt-BR.lproj/Localizable.strings
  44. 3 0
      AIEmoji/pt-PT.lproj/Localizable.strings
  45. 4 0
      AIEmoji/zh-Hans.lproj/Localizable.strings
  46. 3 0
      AIEmoji/zh-Hant.lproj/Localizable.strings

+ 6 - 2
AIEmoji.xcodeproj/project.pbxproj

@@ -128,6 +128,7 @@
 		A83404FE2DA35BFE00C140E4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = A83404FC2DA35BFE00C140E4 /* Localizable.strings */; };
 		A83405032DA35CB700C140E4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = A83405012DA35CB700C140E4 /* InfoPlist.strings */; };
 		A83405202DA3ADA900C140E4 /* TSPhotoSizeHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A834051F2DA3ADA600C140E4 /* TSPhotoSizeHelper.swift */; };
+		A83F28B22E17892B009A4975 /* animated_aiBaby.apng in Resources */ = {isa = PBXBuildFile; fileRef = A83F28B12E17892B009A4975 /* animated_aiBaby.apng */; };
 		A85E478F2D67115A0018D62D /* TSTextGeneralPictureVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A85E478E2D6711590018D62D /* TSTextGeneralPictureVC.swift */; };
 		A85E47922D6728A00018D62D /* TSTextGeneralPictureVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = A85E47912D67289F0018D62D /* TSTextGeneralPictureVM.swift */; };
 		A85E47962D672ADA0018D62D /* TSTextPicGennerateVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A85E47952D672AD90018D62D /* TSTextPicGennerateVC.swift */; };
@@ -465,6 +466,7 @@
 		A83405192DA3828E00C140E4 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		A834051A2DA3828E00C140E4 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
 		A834051F2DA3ADA600C140E4 /* TSPhotoSizeHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPhotoSizeHelper.swift; sourceTree = "<group>"; };
+		A83F28B12E17892B009A4975 /* animated_aiBaby.apng */ = {isa = PBXFileReference; lastKnownFileType = file; path = animated_aiBaby.apng; sourceTree = "<group>"; };
 		A85E478E2D6711590018D62D /* TSTextGeneralPictureVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTextGeneralPictureVC.swift; sourceTree = "<group>"; };
 		A85E47912D67289F0018D62D /* TSTextGeneralPictureVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTextGeneralPictureVM.swift; sourceTree = "<group>"; };
 		A85E47952D672AD90018D62D /* TSTextPicGennerateVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTextPicGennerateVC.swift; sourceTree = "<group>"; };
@@ -2320,6 +2322,7 @@
 			isa = PBXGroup;
 			children = (
 				A8EB38422E13FEF3002F90E9 /* Gift.apng */,
+				A83F28B12E17892B009A4975 /* animated_aiBaby.apng */,
 				A8708A522E0D4FA000601686 /* discover_0_AnimatePhoto.gif */,
 				A83404D62D9D34ED00C140E4 /* Kelsi-fill.otf */,
 				A83404D72D9D34ED00C140E4 /* Kelsi-Regular.otf */,
@@ -2459,6 +2462,7 @@
 				A80E72482D3F4F0A00C64288 /* templates.json in Resources */,
 				A83404CC2D9BEED800C140E4 /* Poppins-BlackItalic.ttf in Resources */,
 				A8990E022DE1800100DD55FE /* launch.png in Resources */,
+				A83F28B22E17892B009A4975 /* animated_aiBaby.apng in Resources */,
 				A87587162D81734300286A66 /* text_to_photo_style.json in Resources */,
 				A8FDB1812DCC8C5600E9919B /* catPaw_left.gif in Resources */,
 				A8F7D33E2DF18A1800DDBECE /* arrow.gif in Resources */,
@@ -2872,7 +2876,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2;
+				CURRENT_PROJECT_VERSION = 4;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -2911,7 +2915,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2;
+				CURRENT_PROJECT_VERSION = 4;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;

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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


+ 22 - 0
AIEmoji/Assets.xcassets/PTP/style/ptp_style_BlytheDoll.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/PTP/style/ptp_style_BlytheDoll.imageset/ptp_style_BlytheDoll@2x.png


BIN
AIEmoji/Assets.xcassets/PTP/style/ptp_style_BlytheDoll.imageset/ptp_style_BlytheDoll@3x.png


+ 22 - 0
AIEmoji/Assets.xcassets/PTP/style/ptp_style_Caricature.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/PTP/style/ptp_style_Caricature.imageset/ptp_style_Caricature@2x.png


BIN
AIEmoji/Assets.xcassets/PTP/style/ptp_style_Caricature.imageset/ptp_style_Caricature@3x.png


+ 22 - 0
AIEmoji/Assets.xcassets/PTP/style/ptp_style_FreshWatercolor.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/PTP/style/ptp_style_FreshWatercolor.imageset/ptp_style_FreshWatercolor@2x.png


BIN
AIEmoji/Assets.xcassets/PTP/style/ptp_style_FreshWatercolor.imageset/ptp_style_FreshWatercolor@3x.png


+ 9 - 4
AIEmoji/Business/TSPurchaseMembershipVC/TSPurchasePromotionalVC/TSPurchasePromotionalCountDownTime.swift

@@ -160,8 +160,11 @@ class TSPurchasePromotionalCountDownTime {
         if self.countDownInt >= 0 {
              let minutes = self.countDownInt / 60
              let seconds = self.countDownInt % 60
-            dePrint("\(minutes):\(seconds)")
-             self.complete?(String(format: "%02d", minutes),String(format: "%02d", seconds),false)
+//            dePrint("\(minutes):\(seconds)")
+            kMainAsync {
+                self.complete?(String(format: "%02d", minutes),String(format: "%02d", seconds),false)
+            }
+             
          } else {
              endCountDown()
          }
@@ -169,8 +172,10 @@ class TSPurchasePromotionalCountDownTime {
     
     
     func endCountDown(){
-        self.timer.stop()
-        self.complete?("00","00",true)
+        kMainAsync {
+            self.timer.stop()
+            self.complete?("00","00",true)
+        }
     }
     
     var isNeedNewCountDown:Bool{

+ 6 - 4
AIEmoji/Business/TSPurchaseMembershipVC/TSPurchasePromotionalVC/TSPurchasePromotionalVC.swift

@@ -103,10 +103,12 @@ class TSPurchasePromotionalVC: TSBaseVC {
     }
     
     @objc func closePage(){
-        TSToastShared.hideLoading()
-        closePageBlock?()
-        self.dismiss(animated: true)
-        NotificationCenter.default.post(name: .kCloseTSPurchasePromotionalVC, object: nil)
+        kMainAsync {
+            TSToastShared.hideLoading()
+            self.closePageBlock?()
+            self.dismiss(animated: true)
+            NotificationCenter.default.post(name: .kCloseTSPurchasePromotionalVC, object: nil)
+        }
     }
     
     func onPurchaseStateChanged(){

+ 45 - 0
AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel+Dic.swift

@@ -57,6 +57,11 @@ extension TSDiscoverViewModel {
             TSGenerateModel(json: ptp_SingleFigurine),
             TSGenerateModel(json: ptp_LegoToy),
             TSGenerateModel(json: ptp_Claymation),
+            
+            TSGenerateModel(json: ptp_BlytheDoll),
+            TSGenerateModel(json: ptp_Caricature),
+            TSGenerateModel(json: ptp_FreshWatercolor),
+            
             TSGenerateModel(json: ptp_Felt),
             TSGenerateModel(json: ptp_Knit),
             
@@ -1239,4 +1244,44 @@ extension TSDiscoverViewModel {
             model:kie
         ]
     }
+    
+    
+    
+    var ptp_BlytheDoll:[String:Any]{
+        [
+            imageName: "ptp_style_BlytheDoll",
+           imageText: "Blythe Doll",
+           prompt:"Transform the person in the uploaded photo into a Blythe doll style while keeping the original background exactly the same. Retain all facial features, hairstyle, skin tone, clothing style, and accessories of the person. Convert the eyes into Blythe doll's signature big glossy eyes. The overall style should be a high-quality, realistic Blythe doll with smooth detailed skin texture, realistic lighting consistent with the original photo, and the person's pose and position should remain unchanged.",
+            specialStyle:0,
+            isVip: true,
+            unionType: 1,
+            model:kie
+        ]
+    }
+    
+    var ptp_Caricature:[String:Any]{
+        [
+            imageName: "ptp_style_Caricature",
+           imageText: "Caricature",
+           prompt:"Please create image in Caricature style",
+            specialStyle:0,
+            isVip: true,
+            unionType: 1,
+            model:kie
+        ]
+    }
+    
+    var ptp_FreshWatercolor:[String:Any]{
+        [
+            imageName: "ptp_style_FreshWatercolor",
+           imageText: "Fresh Watercolor",
+           prompt:"Transform this image into a gentle and warm Japanese watercolor illustration style. Retain the original composition and subject but render them with delicate watercolor textures, soft brush strokes, and beautiful layered lighting and shading. The overall image should look heartwarming, emotional, and calming, with a light and fresh color palette, natural gradients, and an airy, dreamy atmosphere. The details should be clear yet softly blended like watercolor on textured paper. Inspired by the style of modern Japanese watercolor illustrators.",
+            specialStyle:0,
+            isVip: true,
+            unionType: 1,
+            model:kie
+        ]
+    }
+    
+    
 }

+ 31 - 15
AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel.swift

@@ -13,6 +13,7 @@ enum TSDiscoverItemAnimationStyle:CaseIterable {
     case none
     case comparison
     case gif
+    case apng
 }
 
 
@@ -80,7 +81,7 @@ class TSDiscoverAnimationItemVM:TSDiscoverBaseItemVM{
     init(title: String, info: String = "",style: TSDiscoverItemAnimationStyle = .comparison, imageNameds: [String]) {
         self.style = style
         self.imageNameds = imageNameds
-        super.init(title: title, imageNamed: "")
+        super.init(title: title, imageNamed: "",info: info)
     }
 }
 //MARK: 分区
@@ -168,27 +169,41 @@ class TSDiscoverViewModel {
             TSDiscoverItemModel(style: .ptp,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_ToonMe","discover_1_ToonMe"]),
                                 generateModel: TSGenerateModel(json: ptp_ToonMe)),
+            
             TSDiscoverItemModel(style: .ptp,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_90sAnime","discover_1_90sAnime"]),
-                                generateModel: TSGenerateModel(json: ptp_90sAnime)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_ChibiSticker","discover_1_ChibiSticker"]),
+                                generateModel: TSGenerateModel(json: ptp_ChibiSticker)),
             TSDiscoverItemModel(style: .ptp,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Irasutoya","discover_1_Irasutoya"]),
                                 generateModel: TSGenerateModel(json: ptp_Irasutoya)),
+
             TSDiscoverItemModel(style: .ptp,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_ChibiSticker","discover_1_ChibiSticker"]),
-                                generateModel: TSGenerateModel(json: ptp_ChibiSticker)),
-            TSDiscoverItemModel(style: .ptp,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_TouhouSeries","discover_1_TouhouSeries"]),
-                                generateModel: TSGenerateModel(json: ptp_TouhouSeries)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_BlytheDoll","discover_1_BlytheDoll"]),
+                                generateModel: TSGenerateModel(json: ptp_BlytheDoll)),
             TSDiscoverItemModel(style: .ptp,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_FairyTail","discover_1_FairyTail"]),
-                                generateModel: TSGenerateModel(json: ptp_FairyTail)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Caricature","discover_1_Caricature"]),
+                                generateModel: TSGenerateModel(json: ptp_Caricature)),
+            
             TSDiscoverItemModel(style: .ptp,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Illustration","discover_1_Illustration"]),
                                 generateModel: TSGenerateModel(json: ptp_Illustration)),
             TSDiscoverItemModel(style: .ptp,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Anime","discover_1_Anime"]),
-                                generateModel: TSGenerateModel(json: ptp_Anime)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_90sAnime","discover_1_90sAnime"]),
+                                generateModel: TSGenerateModel(json: ptp_90sAnime)),
+            
+            TSDiscoverItemModel(style: .ptp,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_FreshWatercolor","discover_1_FreshWatercolor"]),
+                                generateModel: TSGenerateModel(json: ptp_FreshWatercolor)),
+
+//            TSDiscoverItemModel(style: .ptp,
+//                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_FairyTail","discover_1_FairyTail"]),
+//                                generateModel: TSGenerateModel(json: ptp_FairyTail)),
+//            TSDiscoverItemModel(style: .ptp,
+//                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_TouhouSeries","discover_1_TouhouSeries"]),
+//                                generateModel: TSGenerateModel(json: ptp_TouhouSeries)),
+//            TSDiscoverItemModel(style: .ptp,
+//                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Anime","discover_1_Anime"]),
+//                                generateModel: TSGenerateModel(json: ptp_Anime)),
         ]]
         return section
     }()
@@ -251,10 +266,11 @@ class TSDiscoverViewModel {
         section.style = .fullCard
         section.items = [
             TSDiscoverItemModel(style: .futureBaby,
-                                viewModel: TSDiscoverBaseItemVM(
+                                viewModel: TSDiscoverAnimationItemVM(
                                     title: "AI Baby Generator".localized,
-                                    imageNamed: "aiList_futureBaby",
-                                    info: "To see what will your future baby look like".localized
+                                    info: "To see what will your future baby look like".localized,
+                                    style: .apng,
+                                    imageNameds: ["animated_aiBaby.apng"]
                                 ),
                                 generateModel: TSGenerateModel(json: futureBaby)),
         ]

+ 26 - 11
AIEmoji/Business2/DisCover/TSDiscoverVC/Cell/TSDiscoverFullCardCell.swift

@@ -5,13 +5,27 @@
 //  Created by 100Years on 2025/6/23.
 //
 
+import APNGKit
+import Delegate
 class TSDiscoverFullCardCell : TSDiscoverBaseCell {
 
     override func upDateModel() {
         if let model = items as? TSDiscoverItemModel {
-            imageView.image = UIImage(named: model.viewModel.imageNamed)
             textLabel.text = model.name
             infoLabel.text = model.viewModel.info
+            
+            if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM,
+                animationModel.style == .apng,
+               let imageNamed = animationModel.imageNameds.first {
+                let image = try! APNGImage(named: imageNamed)
+                apngImageView.image = image
+                apngImageView.startAnimating()
+                apngImageView.isHidden = false
+            }else{
+                apngImageView.stopAnimating()
+                apngImageView.isHidden = true
+                imageView.image = UIImage(named: model.viewModel.imageNamed)
+            }
         }
       
     }
@@ -21,11 +35,12 @@ class TSDiscoverFullCardCell : TSDiscoverBaseCell {
         return imageView
     }()
     
-
-//    lazy var shadowView: UIImageView = {
-//        let imageView = UIImageView.createImageView(image:.discoverBigShaow,contentMode: .scaleToFill)
-//        return imageView
-//    }()
+    lazy var apngImageView: APNGImageView = {
+        let apngImageView = APNGImageView()
+        apngImageView.autoStartAnimationWhenSetImage = false
+        return apngImageView
+        
+    }()
     
     lazy var textLabel: UILabel = {
         let textLabel = UILabel.createLabel(font: .font(size: 16,weight: .semibold),textColor: .white)
@@ -42,16 +57,16 @@ class TSDiscoverFullCardCell : TSDiscoverBaseCell {
         bgContentView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(clickView)))
         
         bgContentView.addSubview(imageView)
-//        bgContentView.addSubview(shadowView)
+        bgContentView.addSubview(apngImageView)
         bgContentView.addSubview(textLabel)
         bgContentView.addSubview(infoLabel)
         imageView.snp.makeConstraints { make in
             make.edges.equalToSuperview()
         }
-//        shadowView.snp.makeConstraints { make in
-//            make.height.equalTo(90*kDesignScale)
-//            make.leading.trailing.bottom.equalToSuperview()
-//        }
+        apngImageView.snp.makeConstraints { make in
+            make.edges.equalToSuperview()
+        }
+
         
         infoLabel.snp.makeConstraints { make in
             make.leading.equalTo(16.0)

+ 1 - 1
AIEmoji/Business2/DisCover/TSDiscoverVC/Cell/TSDiscoverStyleMoreCell/TSDiscoverStyleMoreCell.swift

@@ -5,7 +5,7 @@
 //  Created by 100Years on 2025/6/23.
 //
 class TSDiscoverStyleMoreCell : TSDiscoverBaseCell {
-
+    
     lazy var collectionView: UICollectionView = {
         let layout = UICollectionViewFlowLayout()
         layout.scrollDirection = .horizontal

+ 2 - 2
AIEmoji/Common/Purchase/TSPurchaseManager.swift

@@ -187,7 +187,7 @@ public class PurchaseManager: NSObject {
             PurchaseProduct(productId: "101", period: .month),//增加月付费
             PurchaseProduct(productId: "102", period: .year),
             PurchaseProduct(productId: "103", period: .week(.week)),
-            PurchaseProduct(productId: "104", period: .week(.weekPromotional1)),
+            PurchaseProduct(productId: "106", period: .week(.weekPromotional1)),
 //            PurchaseProduct(productId: "301", period: .week(.weekPromotional1)),
         ]
     }()
@@ -476,7 +476,7 @@ extension PurchaseManager: SKProductsRequestDelegate {
         debugPrint("PurchaseManager productsRequest didReceive = \(products)")
         
         for product in products {
-            print("商品ID: \(product.productIdentifier)")
+            print("请求到商品ID: \(product.productIdentifier)")
             // 获取促销价格
             if let introductoryPrice = product.introductoryPrice {
                 print("新用户促销价格: \(introductoryPrice.price) \(introductoryPrice.priceLocale.currencySymbol ?? "")")

+ 5 - 1
AIEmoji/Common/Tool/TSCommonTool/TSCommonTool.swift

@@ -264,14 +264,18 @@ func kShareContent(target: UIViewController,anyData:Any?,text:String?) {
     }
 
     let vc = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
-    vc.completionWithItemsHandler = { activity, _, _, _ in
+    vc.completionWithItemsHandler = { activity, completed, returnedItems, error in
         switch activity {
         case .copyToPasteboard:
             UIPasteboard.general.string = text
+        case .saveToCameraRoll:
+            dePrint("保存到了相册")
         default:
             dePrint("")
         }
     }
+    
+
 
     if UIDevice.current.userInterfaceIdiom == .pad {
         vc.modalPresentationStyle = .popover

BIN
AIEmoji/Res/animated_aiBaby.apng


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

@@ -488,3 +488,6 @@
 "First week %@ Then total %@/week" = "Erste Woche %@ Dann insgesamt %@/Woche";
 "Start Trial" = "Testversion starten";
 "Auto renew. Cancel anytime" = "Automatische Verlängerung. Jederzeit kündbar.";
+"Blythe Doll" = "Blythe Puppe";
+"Caricature" = "Karikatur";
+"Fresh Watercolor" = "Frisches Aquarell";

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

@@ -486,3 +486,6 @@
 "Start Trial" = "Start Trial";
 "Auto renew. Cancel anytime" = "Auto renew. Cancel anytime";
 
+"Blythe Doll" = "Blythe Doll";
+"Caricature" = "Caricature";
+"Fresh Watercolor" = "Fresh Watercolor";

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

@@ -486,3 +486,6 @@
 "First week %@ Then total %@/week" = "Primera semana %@ Luego total %@/semana";
 "Start Trial" = "Comienza la prueba";
 "Auto renew. Cancel anytime" = "Renovación automática. Cancela en cualquier momento";
+"Blythe Doll" = "Muñeca Blythe";
+"Caricature" = "Caricatura";
+"Fresh Watercolor" = "Acuarela fresca";

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

@@ -485,3 +485,6 @@
 "First week %@ Then total %@/week" = "最初の週 %@ その後、週あたり %@";
 "Start Trial" = "トライアルを開始";
 "Auto renew. Cancel anytime" = "自動更新。いつでもキャンセル可能";
+"Blythe Doll" = "ブライスドール";
+"Caricature" = "風刺画";
+"Fresh Watercolor" = "フレッシュ水彩画";

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

@@ -490,3 +490,6 @@
 "First week %@ Then total %@/week" = "첫 주 %@ 그 다음 주당 %@";
 "Start Trial" = "무료 체험 시작";
 "Auto renew. Cancel anytime" = "자동 갱신. 언제든지 취소 가능";
+"Blythe Doll" = "블라이스 인형";
+"Caricature" = "풍자 만화";
+"Fresh Watercolor" = "신선한 수채화";

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

@@ -485,3 +485,6 @@
 "First week %@ Then total %@/week" = "Primeira semana %@ Depois, total %@/semana";
 "Start Trial" = "Comece o teste";
 "Auto renew. Cancel anytime" = "Renovação automática. Cancele a qualquer momento.";
+"Blythe Doll" = "Boneca Blythe";
+"Caricature" = "Caricatura";
+"Fresh Watercolor" = "Aquarela fresca";

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

@@ -484,3 +484,6 @@
 "First week %@ Then total %@/week" = "Primeira semana %@ Depois, total %@/semana";
 "Start Trial" = "Comece o teste";
 "Auto renew. Cancel anytime" = "Renovação automática. Cancele a qualquer momento.";
+"Blythe Doll" = "Boneca Blythe";
+"Caricature" = "Caricatura";
+"Fresh Watercolor" = "Aquarela fresca";

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

@@ -486,3 +486,7 @@
 "First week %@ Then total %@/week" = "首周 %@ 随后每周总计 %@";
 "Start Trial" = "立即试用";
 "Auto renew. Cancel anytime" = "自动续订。随时取消";
+
+"Blythe Doll" = "布莱斯娃娃";
+"Caricature" = "漫画";
+"Fresh Watercolor" = "清新水彩";

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

@@ -475,3 +475,6 @@
 "First week %@ Then total %@/week" = "首周%@隨後每週總計%@";
 "Start Trial" = "立即試用";
 "Auto renew. Cancel anytime" = "自動續訂。隨時取消";
+"Blythe Doll" = "布萊斯娃娃";
+"Caricature" = "漫畫";
+"Fresh Watercolor" = "清新水彩";