瀏覽代碼

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

100Years 2 周之前
父節點
當前提交
06dde61b95
共有 46 個文件被更改,包括 357 次插入40 次删除
  1. 6 2
      AIEmoji.xcodeproj/project.pbxproj
  2. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_BlytheDoll.imageset/Contents.json
  3. 二進制
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_BlytheDoll.imageset/discover_0_BlytheDoll@2x.png
  4. 二進制
      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. 二進制
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_Caricature.imageset/discover_0_Caricature@2x.png
  7. 二進制
      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. 二進制
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_FreshWatercolor.imageset/discover_0_FreshWatercolor@2x.png
  10. 二進制
      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. 二進制
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_BlytheDoll.imageset/discover_1_BlytheDoll@2x.png
  13. 二進制
      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. 二進制
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_Caricature.imageset/discover_1_Caricature@2x.png
  16. 二進制
      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. 二進制
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_FreshWatercolor.imageset/discover_1_FreshWatercolor@2x.png
  19. 二進制
      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. 二進制
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_BlytheDoll.imageset/ptp_style_BlytheDoll@2x.png
  22. 二進制
      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. 二進制
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_Caricature.imageset/ptp_style_Caricature@2x.png
  25. 二進制
      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. 二進制
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_FreshWatercolor.imageset/ptp_style_FreshWatercolor@2x.png
  28. 二進制
      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. 二進制
      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
+  }
+}

二進制
AIEmoji/Assets.xcassets/Discover/Style/discover_0_BlytheDoll.imageset/discover_0_BlytheDoll@2x.png


二進制
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
+  }
+}

二進制
AIEmoji/Assets.xcassets/Discover/Style/discover_0_Caricature.imageset/discover_0_Caricature@2x.png


二進制
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
+  }
+}

二進制
AIEmoji/Assets.xcassets/Discover/Style/discover_0_FreshWatercolor.imageset/discover_0_FreshWatercolor@2x.png


二進制
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
+  }
+}

二進制
AIEmoji/Assets.xcassets/Discover/Style/discover_1_BlytheDoll.imageset/discover_1_BlytheDoll@2x.png


二進制
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
+  }
+}

二進制
AIEmoji/Assets.xcassets/Discover/Style/discover_1_Caricature.imageset/discover_1_Caricature@2x.png


二進制
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
+  }
+}

二進制
AIEmoji/Assets.xcassets/Discover/Style/discover_1_FreshWatercolor.imageset/discover_1_FreshWatercolor@2x.png


二進制
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
+  }
+}

二進制
AIEmoji/Assets.xcassets/PTP/style/ptp_style_BlytheDoll.imageset/ptp_style_BlytheDoll@2x.png


二進制
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
+  }
+}

二進制
AIEmoji/Assets.xcassets/PTP/style/ptp_style_Caricature.imageset/ptp_style_Caricature@2x.png


二進制
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
+  }
+}

二進制
AIEmoji/Assets.xcassets/PTP/style/ptp_style_FreshWatercolor.imageset/ptp_style_FreshWatercolor@2x.png


二進制
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

二進制
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" = "清新水彩";