Forráskód Böngészése

首页布局开发完毕

100Years 3 hete
szülő
commit
349d78d792
93 módosított fájl, 743 hozzáadás és 584 törlés
  1. BIN
      .DS_Store
  2. 4 4
      Podfile
  3. 56 0
      TSLiveWallpaper.xcodeproj/project.pbxproj
  4. BIN
      TSLiveWallpaper/Assets.xcassets/.DS_Store
  5. 0 22
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Animated.imageset/Contents.json
  6. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Animated.imageset/aiList_Animated@2x.png
  7. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Animated.imageset/aiList_Animated@3x.png
  8. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Colorize.imageset/aiList_Colorize@2x.png
  9. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Colorize.imageset/aiList_Colorize@3x.png
  10. 0 22
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Descratch.imageset/Contents.json
  11. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Descratch.imageset/aiList_Descratch@2x.png
  12. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Descratch.imageset/aiList_Descratch@3x.png
  13. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enhance.imageset/aiList_Enhance@2x.png
  14. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enhance.imageset/aiList_Enhance@3x.png
  15. 0 22
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enlighten.imageset/Contents.json
  16. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enlighten.imageset/aiList_Enlighten@2x.png
  17. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enlighten.imageset/aiList_Enlighten@3x.png
  18. 0 22
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_PortraitFusion.imageset/Contents.json
  19. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_PortraitFusion.imageset/aiList_PortraitFusion@2x.png
  20. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_PortraitFusion.imageset/aiList_PortraitFusion@3x.png
  21. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Recreate.imageset/aiList_Recreate@2x.png
  22. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Recreate.imageset/aiList_Recreate@3x.png
  23. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Remove.imageset/aiList_Remove@2x.png
  24. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Remove.imageset/aiList_Remove@3x.png
  25. 0 22
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_RemoveBg.imageset/Contents.json
  26. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_RemoveBg.imageset/aiList_RemoveBg@2x.png
  27. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_RemoveBg.imageset/aiList_RemoveBg@3x.png
  28. 6 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/Contents.json
  29. 1 2
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_AdjustLight.imageset/Contents.json
  30. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_AdjustLight.imageset/alistHome_0_AdjustLight@2x.png
  31. 1 2
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Colorize.imageset/Contents.json
  32. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Colorize.imageset/alistHome_0_Colorize@2x.png
  33. 1 2
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Descratch.imageset/Contents.json
  34. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Descratch.imageset/alistHome_0_Descratch@2x.png
  35. 1 2
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Enhance.imageset/Contents.json
  36. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Enhance.imageset/alistHome_0_Enhance@2x.png
  37. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_PhotoEnhance.imageset/Contents.json
  38. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_PhotoEnhance.imageset/alistHome_0_PhotoEnhance@2x.png
  39. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_PortraitFusion.imageset/Contents.json
  40. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_PortraitFusion.imageset/alistHome_0_PortraitFusion@2x.png
  41. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Recreate.imageset/Contents.json
  42. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Recreate.imageset/alistHome_0_Recreate@2x.png
  43. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveBackground.imageset/Contents.json
  44. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveBackground.imageset/alistHome_0_RemoveBackground@2x.png
  45. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveObjects.imageset/Contents.json
  46. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveObjects.imageset/alistHome_0_RemoveObjects@2x.png
  47. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveWatermark.imageset/Contents.json
  48. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveWatermark.imageset/alistHome_0_RemoveWatermark@2x.png
  49. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_AdjustLight.imageset/Contents.json
  50. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_AdjustLight.imageset/alistHome_1_AdjustLight@2x.png
  51. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Colorize.imageset/Contents.json
  52. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Colorize.imageset/alistHome_1_Colorize@2x.png
  53. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Descratch.imageset/Contents.json
  54. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Descratch.imageset/alistHome_1_Descratch@2x.png
  55. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Enhance.imageset/Contents.json
  56. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Enhance.imageset/alistHome_1_Enhance@2x.png
  57. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_PhotoEnhance.imageset/Contents.json
  58. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_PhotoEnhance.imageset/alistHome_1_PhotoEnhance@2x.png
  59. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Recreate.imageset/Contents.json
  60. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Recreate.imageset/alistHome_1_Recreate@2x.png
  61. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveBackground.imageset/Contents.json
  62. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveBackground.imageset/alistHome_1_RemoveBackground@2x.png
  63. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveObjects.imageset/Contents.json
  64. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveObjects.imageset/alistHome_1_RemoveObjects@2x.png
  65. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveWatermark.imageset/Contents.json
  66. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveWatermark.imageset/alistHome_1_RemoveWatermark@2x.png
  67. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/ic_Close.imageset/Contents.json
  68. BIN
      TSLiveWallpaper/Assets.xcassets/Common/ic_Close.imageset/ic_Close@2x.png
  69. BIN
      TSLiveWallpaper/Assets.xcassets/Common/ic_Close.imageset/ic_Close@3x.png
  70. 1 1
      TSLiveWallpaper/Business/BusinessView/TSGeneratorView/TSGeneratorView.swift
  71. 1 1
      TSLiveWallpaper/Business/TSAIListVC/TSAIAgeImageHintVC/TSAIListHintBaseVC.swift
  72. 3 1
      TSLiveWallpaper/Business/TSAIListVC/TSAIList+Enmu.swift
  73. 14 21
      TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/TSAIListStyleMoreVC/TSAIListStyleMoreVC.swift
  74. 11 17
      TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/TSAIListVC.swift
  75. 13 4
      TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/VM/TSAIListDataModel.swift
  76. 158 8
      TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/VM/TSAIListDataVM+Dic.swift
  77. 131 156
      TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/VM/TSAIListDataVM.swift
  78. 4 6
      TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/View/TSAILIstBannerCell.swift
  79. 0 247
      TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/View/TSAILIstStyleMoreCell.swift
  80. BIN
      TSLiveWallpaper/Resource/Gif/aiList_Angry.gif
  81. BIN
      TSLiveWallpaper/Resource/Gif/aiList_Applaud.gif
  82. BIN
      TSLiveWallpaper/Resource/Gif/aiList_Cheers.gif
  83. BIN
      TSLiveWallpaper/Resource/Gif/aiList_JazzDance.gif
  84. BIN
      TSLiveWallpaper/Resource/Gif/aiList_KissintheRain.gif
  85. BIN
      TSLiveWallpaper/Resource/Gif/aiList_Laugh.gif
  86. BIN
      TSLiveWallpaper/Resource/Gif/aiList_NewRevive.gif
  87. BIN
      TSLiveWallpaper/Resource/Gif/aiList_Pray.gif
  88. BIN
      TSLiveWallpaper/Resource/Gif/aiList_Revive.gif
  89. BIN
      TSLiveWallpaper/Resource/Gif/aiList_Salute.gif
  90. BIN
      TSLiveWallpaper/Resource/Gif/aiList_SendRose.gif
  91. BIN
      TSLiveWallpaper/Resource/Gif/aiList_Shock.gif
  92. BIN
      TSLiveWallpaper/Resource/Gif/aiList_SpookyGhostface.gif
  93. BIN
      TSLiveWallpaper/Resource/Gif/aiList_SurpriseKiss.gif

BIN
.DS_Store


+ 4 - 4
Podfile

@@ -22,14 +22,14 @@ target 'TSLiveWallpaper' do
   pod 'KLExtension',:git=>"https://gitee.com/WanlanNeel/klextension.git"
   pod 'KLTips',:git=>"https://gitee.com/WanlanNeel/kltips.git"
   pod 'Localize-Swift', '~> 3.2'
-  pod 'BetterSegmentedControl', '~> 2.0'
+  pod "KingfisherWebP"
+
+
   pod 'AFNetworking',:git => "https://github.com/xlDon/AFNetworking-PrivacyInfo.git"
+  pod 'BetterSegmentedControl', '~> 2.0'
   pod 'RealmSwift', '~>10'
   pod 'TSSmalCoacopods', :path => '../TSSmalCoacopods'
   pod "DynamicBlurView"
-#  pod 'TYCyclePagerView'
-  pod "KingfisherWebP"
-  
   pod "HXPhotoPicker/Picker" #只有选择器
   pod "HXPhotoPicker/Camera/Lite"#不包含定位功能
   pod "HXPhotoPicker/Editor" #只有编辑器

+ 56 - 0
TSLiveWallpaper.xcodeproj/project.pbxproj

@@ -150,6 +150,20 @@
 		A8EB1A322E2F716A001F58D7 /* TSImagesComparisonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8EB1A312E2F716A001F58D7 /* TSImagesComparisonView.swift */; };
 		A8EB1A342E2F7327001F58D7 /* TSAIListHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8EB1A332E2F7320001F58D7 /* TSAIListHeaderView.swift */; };
 		A8EB1A3E2E2F879C001F58D7 /* TSAIListStyleMoreVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8EB1A3D2E2F879B001F58D7 /* TSAIListStyleMoreVC.swift */; };
+		A8EB1A4D2E307572001F58D7 /* aiList_Applaud.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A402E307572001F58D7 /* aiList_Applaud.gif */; };
+		A8EB1A4E2E307572001F58D7 /* aiList_Revive.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A472E307572001F58D7 /* aiList_Revive.gif */; };
+		A8EB1A4F2E307572001F58D7 /* aiList_Pray.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A462E307572001F58D7 /* aiList_Pray.gif */; };
+		A8EB1A502E307572001F58D7 /* aiList_KissintheRain.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A432E307572001F58D7 /* aiList_KissintheRain.gif */; };
+		A8EB1A512E307572001F58D7 /* aiList_Shock.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A4A2E307572001F58D7 /* aiList_Shock.gif */; };
+		A8EB1A522E307572001F58D7 /* aiList_NewRevive.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A452E307572001F58D7 /* aiList_NewRevive.gif */; };
+		A8EB1A532E307572001F58D7 /* aiList_SpookyGhostface.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A4B2E307572001F58D7 /* aiList_SpookyGhostface.gif */; };
+		A8EB1A542E307572001F58D7 /* aiList_SurpriseKiss.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A4C2E307572001F58D7 /* aiList_SurpriseKiss.gif */; };
+		A8EB1A552E307572001F58D7 /* aiList_Salute.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A482E307572001F58D7 /* aiList_Salute.gif */; };
+		A8EB1A562E307572001F58D7 /* aiList_Angry.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A3F2E307572001F58D7 /* aiList_Angry.gif */; };
+		A8EB1A572E307572001F58D7 /* aiList_Cheers.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A412E307572001F58D7 /* aiList_Cheers.gif */; };
+		A8EB1A582E307572001F58D7 /* aiList_JazzDance.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A422E307572001F58D7 /* aiList_JazzDance.gif */; };
+		A8EB1A592E307572001F58D7 /* aiList_Laugh.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A442E307572001F58D7 /* aiList_Laugh.gif */; };
+		A8EB1A5A2E307572001F58D7 /* aiList_SendRose.gif in Resources */ = {isa = PBXBuildFile; fileRef = A8EB1A492E307572001F58D7 /* aiList_SendRose.gif */; };
 		A8EE92C02DFFC3B50077DFFD /* TSImageProComparisonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8EE92BF2DFFC39C0077DFFD /* TSImageProComparisonView.swift */; };
 		A8EE92C22DFFC54C0077DFFD /* TSBootModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8EE92C12DFFC54A0077DFFD /* TSBootModel.swift */; };
 		A8EE92C42DFFC5830077DFFD /* TSBootCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8EE92C32DFFC5820077DFFD /* TSBootCell.swift */; };
@@ -366,6 +380,20 @@
 		A8EB1A312E2F716A001F58D7 /* TSImagesComparisonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSImagesComparisonView.swift; sourceTree = "<group>"; };
 		A8EB1A332E2F7320001F58D7 /* TSAIListHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListHeaderView.swift; sourceTree = "<group>"; };
 		A8EB1A3D2E2F879B001F58D7 /* TSAIListStyleMoreVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListStyleMoreVC.swift; sourceTree = "<group>"; };
+		A8EB1A3F2E307572001F58D7 /* aiList_Angry.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_Angry.gif; sourceTree = "<group>"; };
+		A8EB1A402E307572001F58D7 /* aiList_Applaud.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_Applaud.gif; sourceTree = "<group>"; };
+		A8EB1A412E307572001F58D7 /* aiList_Cheers.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_Cheers.gif; sourceTree = "<group>"; };
+		A8EB1A422E307572001F58D7 /* aiList_JazzDance.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_JazzDance.gif; sourceTree = "<group>"; };
+		A8EB1A432E307572001F58D7 /* aiList_KissintheRain.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_KissintheRain.gif; sourceTree = "<group>"; };
+		A8EB1A442E307572001F58D7 /* aiList_Laugh.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_Laugh.gif; sourceTree = "<group>"; };
+		A8EB1A452E307572001F58D7 /* aiList_NewRevive.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_NewRevive.gif; sourceTree = "<group>"; };
+		A8EB1A462E307572001F58D7 /* aiList_Pray.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_Pray.gif; sourceTree = "<group>"; };
+		A8EB1A472E307572001F58D7 /* aiList_Revive.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_Revive.gif; sourceTree = "<group>"; };
+		A8EB1A482E307572001F58D7 /* aiList_Salute.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_Salute.gif; sourceTree = "<group>"; };
+		A8EB1A492E307572001F58D7 /* aiList_SendRose.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_SendRose.gif; sourceTree = "<group>"; };
+		A8EB1A4A2E307572001F58D7 /* aiList_Shock.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_Shock.gif; sourceTree = "<group>"; };
+		A8EB1A4B2E307572001F58D7 /* aiList_SpookyGhostface.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_SpookyGhostface.gif; sourceTree = "<group>"; };
+		A8EB1A4C2E307572001F58D7 /* aiList_SurpriseKiss.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = aiList_SurpriseKiss.gif; sourceTree = "<group>"; };
 		A8EE92BF2DFFC39C0077DFFD /* TSImageProComparisonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSImageProComparisonView.swift; sourceTree = "<group>"; };
 		A8EE92C12DFFC54A0077DFFD /* TSBootModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBootModel.swift; sourceTree = "<group>"; };
 		A8EE92C32DFFC5820077DFFD /* TSBootCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBootCell.swift; sourceTree = "<group>"; };
@@ -798,6 +826,20 @@
 		A83F28962E16503C009A4975 /* Gif */ = {
 			isa = PBXGroup;
 			children = (
+				A8EB1A3F2E307572001F58D7 /* aiList_Angry.gif */,
+				A8EB1A402E307572001F58D7 /* aiList_Applaud.gif */,
+				A8EB1A412E307572001F58D7 /* aiList_Cheers.gif */,
+				A8EB1A422E307572001F58D7 /* aiList_JazzDance.gif */,
+				A8EB1A432E307572001F58D7 /* aiList_KissintheRain.gif */,
+				A8EB1A442E307572001F58D7 /* aiList_Laugh.gif */,
+				A8EB1A452E307572001F58D7 /* aiList_NewRevive.gif */,
+				A8EB1A462E307572001F58D7 /* aiList_Pray.gif */,
+				A8EB1A472E307572001F58D7 /* aiList_Revive.gif */,
+				A8EB1A482E307572001F58D7 /* aiList_Salute.gif */,
+				A8EB1A492E307572001F58D7 /* aiList_SendRose.gif */,
+				A8EB1A4A2E307572001F58D7 /* aiList_Shock.gif */,
+				A8EB1A4B2E307572001F58D7 /* aiList_SpookyGhostface.gif */,
+				A8EB1A4C2E307572001F58D7 /* aiList_SurpriseKiss.gif */,
 				A83F28972E165043009A4975 /* aiList_BlowKiss.gif */,
 				A83F28982E165043009A4975 /* aiList_ForeheadKiss.gif */,
 				A83F28992E165043009A4975 /* aiList_HeartGesture.gif */,
@@ -1353,6 +1395,20 @@
 				A86857D72DF983620089D222 /* generat_loading.gif in Resources */,
 				A86857C62DF92BE70089D222 /* ZillaSlab-Bold.ttf in Resources */,
 				609B6EA52D6F1221007942D4 /* Localizable.strings in Resources */,
+				A8EB1A4D2E307572001F58D7 /* aiList_Applaud.gif in Resources */,
+				A8EB1A4E2E307572001F58D7 /* aiList_Revive.gif in Resources */,
+				A8EB1A4F2E307572001F58D7 /* aiList_Pray.gif in Resources */,
+				A8EB1A502E307572001F58D7 /* aiList_KissintheRain.gif in Resources */,
+				A8EB1A512E307572001F58D7 /* aiList_Shock.gif in Resources */,
+				A8EB1A522E307572001F58D7 /* aiList_NewRevive.gif in Resources */,
+				A8EB1A532E307572001F58D7 /* aiList_SpookyGhostface.gif in Resources */,
+				A8EB1A542E307572001F58D7 /* aiList_SurpriseKiss.gif in Resources */,
+				A8EB1A552E307572001F58D7 /* aiList_Salute.gif in Resources */,
+				A8EB1A562E307572001F58D7 /* aiList_Angry.gif in Resources */,
+				A8EB1A572E307572001F58D7 /* aiList_Cheers.gif in Resources */,
+				A8EB1A582E307572001F58D7 /* aiList_JazzDance.gif in Resources */,
+				A8EB1A592E307572001F58D7 /* aiList_Laugh.gif in Resources */,
+				A8EB1A5A2E307572001F58D7 /* aiList_SendRose.gif in Resources */,
 				A8FD8F332DFBCB85008CAACF /* ZillaSlab-Regular.ttf in Resources */,
 				A8FD8F342DFBCB85008CAACF /* ZillaSlab-Medium.ttf in Resources */,
 				A8FD8F352DFBCB85008CAACF /* ZillaSlab-BoldItalic.ttf in Resources */,

BIN
TSLiveWallpaper/Assets.xcassets/.DS_Store


+ 0 - 22
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Animated.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Animated.imageset/aiList_Animated@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Animated.imageset/aiList_Animated@3x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Colorize.imageset/aiList_Colorize@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Colorize.imageset/aiList_Colorize@3x.png


+ 0 - 22
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Descratch.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Descratch.imageset/aiList_Descratch@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Descratch.imageset/aiList_Descratch@3x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enhance.imageset/aiList_Enhance@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enhance.imageset/aiList_Enhance@3x.png


+ 0 - 22
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enlighten.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enlighten.imageset/aiList_Enlighten@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enlighten.imageset/aiList_Enlighten@3x.png


+ 0 - 22
TSLiveWallpaper/Assets.xcassets/AIList/aiList_PortraitFusion.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_PortraitFusion.imageset/aiList_PortraitFusion@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_PortraitFusion.imageset/aiList_PortraitFusion@3x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Recreate.imageset/aiList_Recreate@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Recreate.imageset/aiList_Recreate@3x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Remove.imageset/aiList_Remove@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Remove.imageset/aiList_Remove@3x.png


+ 0 - 22
TSLiveWallpaper/Assets.xcassets/AIList/aiList_RemoveBg.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_RemoveBg.imageset/aiList_RemoveBg@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_RemoveBg.imageset/aiList_RemoveBg@3x.png


+ 6 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 1 - 2
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Remove.imageset/Contents.json → TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_AdjustLight.imageset/Contents.json

@@ -5,12 +5,11 @@
       "scale" : "1x"
     },
     {
-      "filename" : "aiList_Remove@2x.png",
+      "filename" : "alistHome_0_AdjustLight@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "aiList_Remove@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_AdjustLight.imageset/alistHome_0_AdjustLight@2x.png


+ 1 - 2
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enhance.imageset/Contents.json → TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Colorize.imageset/Contents.json

@@ -5,12 +5,11 @@
       "scale" : "1x"
     },
     {
-      "filename" : "aiList_Enhance@2x.png",
+      "filename" : "alistHome_0_Colorize@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "aiList_Enhance@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Colorize.imageset/alistHome_0_Colorize@2x.png


+ 1 - 2
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Recreate.imageset/Contents.json → TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Descratch.imageset/Contents.json

@@ -5,12 +5,11 @@
       "scale" : "1x"
     },
     {
-      "filename" : "aiList_Recreate@2x.png",
+      "filename" : "alistHome_0_Descratch@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "aiList_Recreate@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Descratch.imageset/alistHome_0_Descratch@2x.png


+ 1 - 2
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Colorize.imageset/Contents.json → TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Enhance.imageset/Contents.json

@@ -5,12 +5,11 @@
       "scale" : "1x"
     },
     {
-      "filename" : "aiList_Colorize@2x.png",
+      "filename" : "alistHome_0_Enhance@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "aiList_Colorize@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Enhance.imageset/alistHome_0_Enhance@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_PhotoEnhance.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_PhotoEnhance.imageset/alistHome_0_PhotoEnhance@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_PortraitFusion.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_PortraitFusion.imageset/alistHome_0_PortraitFusion@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Recreate.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_Recreate.imageset/alistHome_0_Recreate@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveBackground.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveBackground.imageset/alistHome_0_RemoveBackground@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveObjects.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveObjects.imageset/alistHome_0_RemoveObjects@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveWatermark.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_0_RemoveWatermark.imageset/alistHome_0_RemoveWatermark@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_AdjustLight.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_AdjustLight.imageset/alistHome_1_AdjustLight@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Colorize.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Colorize.imageset/alistHome_1_Colorize@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Descratch.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Descratch.imageset/alistHome_1_Descratch@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Enhance.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Enhance.imageset/alistHome_1_Enhance@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_PhotoEnhance.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_PhotoEnhance.imageset/alistHome_1_PhotoEnhance@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Recreate.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_Recreate.imageset/alistHome_1_Recreate@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveBackground.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveBackground.imageset/alistHome_1_RemoveBackground@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveObjects.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveObjects.imageset/alistHome_1_RemoveObjects@2x.png


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveWatermark.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/home/alistHome_1_RemoveWatermark.imageset/alistHome_1_RemoveWatermark@2x.png


+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Common/ic_Close.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Common/ic_Close.imageset/ic_Close@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Common/ic_Close.imageset/ic_Close@3x.png


+ 1 - 1
TSLiveWallpaper/Business/BusinessView/TSGeneratorView/TSGeneratorView.swift

@@ -19,7 +19,7 @@ class TSGeneratorView: TSBaseView {
         case generalError //通用错误
         case sensitiveError   //敏感类的错误
         case netWorkError //网络错误
-        case generateTooMuch //生成次数过多
+        case generateTooMuch //生成次数过多2.0
     }
     
     var style:Style = .generalError

+ 1 - 1
TSLiveWallpaper/Business/TSAIListVC/TSAIAgeImageHintVC/TSAIListHintBaseVC.swift

@@ -154,7 +154,7 @@ class TSAIListHintBaseVC: TSBaseVC {
     
     override func createView() {
         addNormalNavBarView()
-        _ = setNavigationItem("", imageName: "ic-close", direction: .right, action: #selector(clickView))
+        _ = setNavigationItem("", imageName: "ic_close", direction: .right, action: #selector(clickView))
         view.backgroundColor = .mainBg
      
         contentView.addSubview(popupContentView)

+ 3 - 1
TSLiveWallpaper/Business/TSAIListVC/TSAIList+Enmu.swift

@@ -16,8 +16,10 @@ enum TSGeneratorImageStyle:String {
     case remove = "remove"      //删除图片的东西
     case ptp = "ptp"
     
-    case portraitFusion = "PortraitFusion"
+    case portraitFusion = "PortraitFusion"  //照片融合
     case removeBg = "removeBg"      //删除图片的背景
+    case removeWatermark = "RemoveWatermark"      //移除水印
+    case expandPhoto = "ExpandPhoto"      // AI扩图
     
     var imageMaxKb:Int{
         switch self {

+ 14 - 21
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/TSAIListStyleMoreVC/TSAIListStyleMoreVC.swift

@@ -24,32 +24,24 @@ class TSAIListStyleMoreVC: TSBaseVC {
         fatalError("init(coder:) has not been implemented")
     }
     
-//    lazy var models:[TSDiscoverItemModel] = {
-//        if let list = sectionModel.items as? [TSDiscoverItemModel] {
-//            return list
-//        }else if let list = sectionModel.items as? [[TSDiscoverItemModel]] {
-//            return list.first ?? []
-//        }
-//        return []
-//    }()
-    
+
     //###################################### 集合视图 ######################################
     lazy var collectionView: UICollectionView = {
-//        let layout = TSBaseCollectionViewFlowLayout()
-//        layout.scrollDirection = .horizontal
-//        layout.minimumLineSpacing = 16
-////        layout.minimumInteritemSpacing = 16
-//        layout.itemSize = CGSize(width: 150, height: 200)
         let collectionView = TSBaseCollectionView(frame: .zero, collectionViewLayout: layout)
         collectionView.delegate = self
         collectionView.dataSource = self
-        collectionView.register(TSAILIstStyleMoreBaseCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreImageCell")
-        collectionView.register(TSAILIstStyleMoreAnimationGifCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreImageCell")
+        collectionView.register(TSAILIstStyleMoreBaseCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreBaseCell")
+        collectionView.register(TSAILIstStyleMoreImageCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreImageCell")
         collectionView.register(TSAILIstStyleMoreAnimationGifCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreAnimationGifCell")
         collectionView.register(TSAILIstStyleMoreComparisonCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreComparisonCell")
         collectionView.register(TSAILIstStyleMoreCrossDissolveCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreCrossDissolveCell")
         
-        collectionView.contentInset = kDiscoverSection
+        if layout.scrollDirection == .vertical {
+            collectionView.contentInset = UIEdgeInsets(top: 0, left: 16, bottom: k_Height_safeAreaInsetsBottom() + 10, right: 16)
+        }else{
+            collectionView.contentInset = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16)
+        }
+        
         return collectionView
     }()
     
@@ -183,8 +175,8 @@ class TSAILIstStyleMoreAnimationGifCell: TSAILIstStyleMoreBaseCell,AnimatedImage
             guard let model = model else { return }
             textLabel.text = model.name
     
-            if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM,let imageNamed = animationModel.imageNameds.first {
-                if let gifURL = Bundle.main.url(forResource: imageNamed, withExtension: "gif") {
+            if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM {
+                if let gifURL = Bundle.main.url(forResource: model.imageNamed, withExtension: nil) {
                     animatedImageView.kf.setImage(with: gifURL, options: [.cacheOriginalImage]){ result in
                         switch result {
                         case .success(_):
@@ -207,6 +199,7 @@ class TSAILIstStyleMoreAnimationGifCell: TSAILIstStyleMoreBaseCell,AnimatedImage
         animatedImageView.autoPlayAnimatedImage = false
         animatedImageView.repeatCount = .once
         animatedImageView.delegate = self
+        animatedImageView.contentMode = .scaleAspectFill
         return animatedImageView
     }()
     
@@ -268,9 +261,8 @@ class TSAILIstStyleMoreCrossDissolveCell: TSAILIstStyleMoreBaseCell {
         didSet {
             guard let model = model else { return }
             textLabel.text = model.name
-            
             if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM {
-                imageView.startImageTransitionAnimation(index: animationModel.index,datas: animationModel.imageNameds) { [weak self] index,imageNamed in
+                imageView.startImageTransitionAnimation(index: animationModel.index,datas: animationModel.imageNameds,interval:2.0) { [weak self] index,imageNamed in
                     guard let self = self else { return }
                     guard let imageNamed = imageNamed as? String else { return }
                     animationModel.index = index
@@ -286,6 +278,7 @@ class TSAILIstStyleMoreCrossDissolveCell: TSAILIstStyleMoreBaseCell {
     }()
     
     override func creatUI() {
+        super.creatUI()
         ctxView.addSubview(imageView)
         imageView.snp.makeConstraints { make in
             make.edges.equalToSuperview()

+ 11 - 17
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/TSAIListVC.swift

@@ -28,7 +28,8 @@ class TSAIListVC: TSBaseVC {
         let label = UILabel.createLabel(text: "Home".localized,font: .font(name: .Pacifico, size: 24))
         navBarView.barView.addSubview(label)
         label.snp.makeConstraints { make in
-           make.center.equalToSuperview()
+            make.centerY.equalToSuperview()
+            make.leading.equalTo(16)
         }
         
         navBarView.barView.addSubview(vipBtn)
@@ -49,13 +50,8 @@ class TSAIListVC: TSBaseVC {
     lazy var layout: UICollectionViewFlowLayout = {
         let layout = UICollectionViewFlowLayout()
         layout.scrollDirection = .vertical
-//        let w = k_ScreenWidth-32
-//        let h = kGetScaleHeight(originalSize: CGSizeMake(343, 230), width: w)
-//        layout.itemSize = CGSize(width: w, height: h)
         layout.minimumInteritemSpacing = 8
         layout.minimumLineSpacing = 8
-        
-//        layout.sectionInset = UIEdgeInsets(top: 10, left: 16, bottom: k_Height_TabBar+20, right: 16)
         return layout
     }()
     lazy var collectionView:TSBaseCollectionView = {
@@ -65,6 +61,8 @@ class TSAIListVC: TSBaseVC {
         collectionView.register(TSAILIstBaseCell.self, forCellWithReuseIdentifier: "TSAILIstBaseCell")
         collectionView.register(TSAILIstFullCardCell.self, forCellWithReuseIdentifier: "TSAILIstFullCardCell")
         collectionView.register(TSAILIstStyleMoreCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreCell")
+        collectionView.register(TSAILIstBannerCell.self, forCellWithReuseIdentifier: "TSAILIstBannerCell")
+        collectionView.register(TSAIListHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "TSAIListHeaderView")
         return collectionView
     }()
 
@@ -134,7 +132,7 @@ extension TSAIListVC: UICollectionViewDataSource ,UICollectionViewDelegate,UICol
     func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
         if let secModel = viewModel.listDatas.safeObj(At:indexPath.section),
            kind == UICollectionView.elementKindSectionHeader,
-           let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "TSDiscoverHeaderView", for: indexPath) as? TSAIListHeaderView{
+           let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "TSAIListHeaderView", for: indexPath) as? TSAIListHeaderView{
             header.sectionModel = secModel
             header.clickBlock = { [weak self] model in
                 guard let self = self else { return }
@@ -154,12 +152,9 @@ extension TSAIListVC: UICollectionViewDataSource ,UICollectionViewDelegate,UICol
 
     func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets{
         if let secModel = viewModel.listDatas.safeObj(At:section) {
-            var sectionEdge = UIEdgeInsets(top: 0, left: kDiscoverSection.left, bottom: 0, right: kDiscoverSection.right)
-            if secModel.title.isEmpty,section != 0 {
-                sectionEdge = UIEdgeInsets(top: 20, left: kDiscoverSection.left, bottom: 0, right: kDiscoverSection.right)
-            }
+            var sectionEdge = secModel.sectionEdge
             if section == viewModel.listDatas.count-1 {
-                sectionEdge = UIEdgeInsets(top: sectionEdge.top, left: sectionEdge.left, bottom: sectionEdge.bottom+20, right: sectionEdge.right)
+                sectionEdge = UIEdgeInsets(top: sectionEdge.top, left: sectionEdge.left, bottom: k_Height_TabBar + 20, right: sectionEdge.right)
             }
             return sectionEdge
         }
@@ -208,13 +203,12 @@ extension TSAIListVC {
         }
         let layout = TSBaseCollectionViewFlowLayout()
         layout.scrollDirection = .vertical
-        let itemW = (k_ScreenWidth-32.0-13.0-2.0)/2.0
-        let itemH = kGetScaleHeight(originalSize: CGSize(width: 165.0, height: 220.0), width: itemW)
+        let itemW = (k_ScreenWidth-32.0-16.0-2.0)/2.0
+        let itemH = kGetScaleHeight(originalSize: CGSize(width: 163.0, height: 217.0), width: itemW)
         layout.itemSize = CGSize(width: itemW, height: itemH)
-        layout.minimumInteritemSpacing = 13
+        layout.minimumInteritemSpacing = 16
         layout.minimumLineSpacing = 16
-        layout.sectionInset = UIEdgeInsets(top: 10, left: 16, bottom:k_Height_safeAreaInsetsBottom() + 10, right: 16)
-        kPushVC(target: self, modelVC:TSAIListStyleMoreVC(titleString:"", models: models, layout: layout, clickBlock: nil))
+        kPushVC(target: self, modelVC:TSAIListStyleMoreVC(titleString:sectionModel.title, models: models, layout: layout, clickBlock: nil))
     }
     
     static func clickCell(target:UIViewController,indexPath:IndexPath,itemModel:TSDiscoverItemModel,secModel:TSDiscoverSectionModel) {

+ 13 - 4
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/VM/TSAIListDataModel.swift

@@ -48,7 +48,7 @@ enum TSDiscoverViewStyle:CaseIterable {
         case .fullCard:
             return TSAILIstFullCardCell.self
         case .banner:
-            return TSAILIstFullCardCell.self
+            return TSAILIstBannerCell.self
         }
     }
 }
@@ -58,7 +58,7 @@ class TSDiscoverBaseItemVM {
     var imageNamed:String = ""
     var info:String = ""
 
-    init(title: String, imageNamed: String, info: String = "") {
+    init(title: String = "", imageNamed: String = "", info: String = "") {
         self.title = title
         self.imageNamed = imageNamed
         self.info = info
@@ -69,7 +69,7 @@ class TSDiscoverAnimationItemVM:TSDiscoverBaseItemVM{
     var style:TSDiscoverItemAnimationStyle = .none
     var imageNameds:[String] = []
     var index:Int = 0 
-    init(title: String, info: String = "",style: TSDiscoverItemAnimationStyle = .comparison, imageNameds: [String]) {
+    init(title: String = "", info: String = "",style: TSDiscoverItemAnimationStyle = .comparison, imageNameds: [String] = []) {
         self.style = style
         self.imageNameds = imageNameds
         super.init(title: title, imageNamed: "")
@@ -84,8 +84,10 @@ class TSDiscoverSectionModel {
     var style:TSDiscoverViewStyle = .styleMore
     var items:[Any] = []
     var sectionEdge:UIEdgeInsets = UIEdgeInsets(top: 10, left: kDiscoverSection.left, bottom: 0, right: kDiscoverSection.right)
-    func setTitle(title:String) {
+
+    func setTitle(title:String,style:TSDiscoverViewStyle = .styleMore) {
         self.title = title
+        self.style = style
     }
 }
 
@@ -105,6 +107,13 @@ class TSDiscoverItemModel {
     }
     
     var imageNamed:String {
+        
+        if let generateModel = generateModel {
+            if !generateModel.imageName.isEmpty {
+                return generateModel.imageName
+            }
+        }
+
         if !viewModel.imageNamed.isEmpty {
             return viewModel.imageNamed
         }

+ 158 - 8
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/VM/TSAIListDataVM+Dic.swift

@@ -12,7 +12,7 @@ private let isVip = "isVip"
 private let specialStyle = "specialStyle"
 private let unionType = "unionType"
 
-private let model = "model"             //走新的通道,根据内容确定
+private let model = "model"     //走新的通道,根据内容确定
 let kie = "kie"                 //走kie--chatgpt
 let volcengine = "volcengine"   //走火山引擎
 let flux = "flux"               //走kie--flux
@@ -21,10 +21,128 @@ private let input = "input"
 
 //MARK: 功能性模型
 extension TSAIListDataVM {
+    
+    var video_Angry:[String:Any]{
+        [
+            imageName: "aiList_Angry.gif",
+            imageText: "Angry",
+            prompt:"Animate the person in the photo to show a natural angry expression. Their eyebrows should furrow deeply, eyes narrow with intensity, and lips pressed firmly or slightly open as if speaking sharply. The facial muscles should tense realistically, with subtle head movement to convey displeasure. Keep the animation smooth and avoid over-exaggeration. Maintain original lighting and background",
+            isVip: true
+        ]
+    }
+    
+    var video_Pray:[String:Any]{
+        [
+            imageName: "aiList_Pray.gif",
+            imageText: "Pray",
+            prompt:"Animate the person in the photo to bring their hands together gently in a praying gesture at chest level. Their eyes should be closed with a calm and serious expression, reflecting deep reverence and sincerity. The movement must be smooth and natural, conveying a quiet, respectful moment of prayer. Avoid any playful or exaggerated expressions. Maintain consistent lighting and background with the original photo.",
+            isVip: true
+        ]
+    }
+    
+    var video_Shock:[String:Any]{
+        [
+            imageName: "aiList_Shock.gif",
+            imageText: "Shock",
+            prompt:"Create a realistic and natural expression of shock on the specific person in the uploaded photo. Adjust the facial features—such as widened eyes, slightly open mouth, raised eyebrows, and tense facial muscles—to suit their unique appearance, age, and pose. The body language and expression should convincingly convey sudden surprise or disbelief without exaggeration, reflecting an authentic moment of shock. The overall effect should look like a genuine, spontaneous reaction appropriate to the individual.",
+            isVip: true
+        ]
+    }
+    
+    var video_SpookyGhostface:[String:Any]{
+        [
+            imageName: "aiList_SpookyGhostface.gif",
+            imageText: "Spooky Ghostface",
+            prompt:"Make the person in the photo pull a goofy, exaggerated face — crossing their eyes, sticking out their tongue, and smiling in a mischievous way. The expression should be playful and silly, like they’re joking around. Keep the animation smooth and the background consistent.",
+            isVip: true
+        ]
+    }
+    
+    var video_Laugh:[String:Any]{
+        [
+            imageName: "aiList_Laugh.gif",
+            imageText: "Laugh",
+            prompt:"Make the person in the photo laugh naturally, with a genuine and joyful expression. The facial movement should be smooth and realistic, including eye crinkling, slight head movement, and visible teeth. The smile should look spontaneous, like they just heard something funny. Keep the lighting and background consistent with the original photo.",
+            isVip: true
+        ]
+    }
+    
+    var video_KissintheRain:[String:Any]{
+        [
+            imageName: "aiList_KissintheRain.gif",
+            imageText: "Kiss in the Rain",
+            prompt:"Starting from a still image, a romantic surprise moment unfolds: a charming character of the opposite gender smoothly walks in from the left side of the frame and gently kisses the main character on the cheek (not the lips). The kiss is playful and sweet, not overly intimate. The main character remains mostly still, reacting with a natural surprised expression—slightly wide eyes or a soft blush—but does not lean in or move toward the kisser. At the moment of the kiss, pink heart-shaped bubbles softly float up around them, enhancing the magical, loving atmosphere. Movements are fluid, realistic, and emotionally expressive, with a soft dreamy lighting and smooth cinematic motion.",
+            isVip: true
+        ]
+    }
+    
+    var video_SurpriseKiss:[String:Any]{
+        [
+            imageName: "aiList_SurpriseKiss.gif",
+            imageText: "Surprise Kiss",
+            prompt:"Starting from a still image, a romantic surprise moment unfolds: a charming character of the opposite gender smoothly walks in from the left side of the frame and gently kisses the main character on the cheek (not the lips). The kiss is playful and sweet, not overly intimate. The main character remains mostly still, reacting with a natural surprised expression—slightly wide eyes or a soft blush—but does not lean in or move toward the kisser. At the moment of the kiss, pink heart-shaped bubbles softly float up around them, enhancing the magical, loving atmosphere. Movements are fluid, realistic, and emotionally expressive, with a soft dreamy lighting and smooth cinematic motion.",
+            isVip: true
+        ]
+    }
+    
+    var video_SendRose:[String:Any]{
+        [
+            imageName: "aiList_SendRose.gif",
+            imageText: "Send Rose",
+            prompt:"In the video, the person on the left side of the frame gently picks up a single red rose, then gracefully turns around and offers it to the person on the right. The person on the right also turns to face the other person and receives the rose with a soft, smile, appreciative and surprise expression. The camera transitions slowly and naturally into a medium shot, adjusting from the original framing. If the starting shot is a close-up, the camera slightly zooms out. Movements are fluid, emotionally expressive, and realistic — like a moment from a live-action romantic film. Natural lighting, soft depth of field, realistic human motion, and expressive facial detail.",
+            isVip: true
+        ]
+    }
+    
+    var video_Salute:[String:Any]{
+        [
+            imageName: "aiList_Salute.gif",
+            imageText: "Salute",
+            prompt:"A highly realistic animation of the person in the photo smoothly turning to face the camera and performing a precise, respectful salute. The person should look directly at the viewer, moving naturally as if alive. Their identity, facial features, clothing, and the photo’s original lighting and color tone must be fully preserved. All anatomy must be biologically correct — exactly five natural human fingers per hand, no extra fingers, missing fingers, or deformations. No unnatural body shapes. Do not introduce or remove any objects or people. The animation must look completely plausible and grounded in reality, with no visual anomalies.",
+            isVip: true
+        ]
+    }
+    
+    var video_Cheers:[String:Any]{
+        [
+            imageName: "aiList_Cheers.gif",
+            imageText: "Cheers",
+            prompt:"Animate the person or people in the photo to naturally perform a 'cheers' gesture, raising a glass in celebration. If they are already holding a drink or glass, preserve it as-is; if not, add a suitable glass or champagne flute that visually fits the photo's context and lighting. Keep each subject's original pose, orientation, and camera angle—even if they are not facing the camera. Movements should be biologically accurate, expressive, and fluid, including subtle facial animation, arm motion, and natural eye contact. The original photo’s lighting, color tone, background, and visual style must remain untouched. If multiple people are present, they should toast together with slight natural variation. The animation should loop seamlessly, capturing a joyful, realistic toast moment.",
+            isVip: true
+        ]
+    }
 
+    var video_Applaud:[String:Any]{
+        [
+            imageName: "aiList_Applaud.gif",
+            imageText: "Applaud",
+            prompt:"Animate the person or people in the photo to naturally start clapping and applauding, keeping their original body pose, orientation, and camera angle. The animation must preserve their exact position and posture from the original image, even if they are not facing the camera. Movements should be biologically accurate, fluid, and expressive, including natural facial and upper body motion. Maintain the original lighting, color grading, and background. If multiple people are in the photo, they should clap in coordination with slight variation for realism. The animation should loop seamlessly and resemble a real, joyful applause moment.",
+            isVip: true
+        ]
+    }
+    
+    var video_JazzDance:[String:Any]{
+        [
+            imageName: "aiList_JazzDance.gif",
+            imageText: "Jazz Dance",
+            prompt:"The exact person in the uploaded photo performs a stylish jazz dance routine with natural full-body movements. The person is allowed to walk, turn, and change angles during the dance. However, their facial features, gender, hairstyle, and clothing must remain exactly the same as in the photo — do not alter their identity in any way. The background stays consistent with the original image. The video shows smooth, cinematic camera motion and realistic lighting. Ultra-detailed, 4K video, no face-swapping, no gender change, no stylization.",
+            isVip: true
+        ]
+    }
+    
+    var video_Revive:[String:Any]{
+        [
+            imageName: "aiList_Revive.gif",
+            imageText: "Revive",
+            prompt:"Create a smooth and realistic animation based on the uploaded photo. Keep the original identity, style, and appearance while adding natural, subtle, and lively movements. The animation should feel real and immersive, with elegant head tilts, breathing, blinking, and slight body or fur motions to enhance realism. Avoid exaggerated or artificial movements.",
+            isVip: true
+        ]
+    }
+    
     //Say Hi
     var video_SayHi:[String:Any]{
         [
+            imageName: "aiList_SayHi.gif",
             imageText: "Say Hi",
             prompt:"Create a realistic and natural scene where the people in the old photo are facing the camera and waving their hands as if saying hi. Their pose should look completely natural and relaxed, with warm and happy facial expressions, slightly smiling, and their body language should show a friendly greeting. Keep their original appearance, clothing, and style, but seamlessly adjust their pose so they look like they were originally waving at the camera. Make sure the lighting, colors, and atmosphere remain consistent with the original photo to maintain realism and harmony.",
             isVip: true
@@ -33,6 +151,7 @@ extension TSAIListDataVM {
     
     var video_Smile:[String:Any]{
         [
+            imageName: "aiList_Smile.gif",
             imageText: "Smile",
             prompt:"Photo animation, Slight head turn, normal eye blinking, smile, realistic facial movement",
             isVip: true
@@ -42,6 +161,7 @@ extension TSAIListDataVM {
 
     var video_Hug:[String:Any]{
         [
+            imageName: "aiList_Hug.gif",
             imageText: "Hug",
             prompt:"Create a realistic and emotionally warm scene where the people in the old photo are gently hugging each other. Their pose should look completely natural, with soft and relaxed body language, subtle happy facial expressions, and a warm atmosphere. The final image should preserve their original appearance, clothing, and style, but seamlessly add a gentle hug between them, making it look like they were originally embracing each other in the photo. The lighting and colors should remain consistent with the original photo to maintain realism and harmony.",
             isVip: true
@@ -50,6 +170,7 @@ extension TSAIListDataVM {
     
     var video_HeartGesture:[String:Any]{
         [
+            imageName: "aiList_HeartGesture.gif",
             imageText: "Heart Gesture",
             prompt:"Create a realistic and natural scene where the people in the old photo are facing the camera and making a heart gesture with their hands. Their pose should look completely natural and relaxed, with warm, cheerful facial expressions and friendly body language. Preserve their original appearance, clothing, and style, but seamlessly adjust their pose so they look like they were originally making a cute heart sign in the photo. Make sure the lighting, colors, and atmosphere stay consistent with the original photo to maintain realism and harmony.",
             isVip: true
@@ -58,6 +179,7 @@ extension TSAIListDataVM {
     
     var video_ForeheadKiss:[String:Any]{
         [
+            imageName: "aiList_ForeheadKiss.gif",
             imageText: "Forehead Kiss",
             prompt:"Create a realistic and emotionally warm scene where one person in the old photo is gently kissing another person on the forehead. Their pose should look completely natural and comfortable, with soft, loving facial expressions and relaxed body language that shows care and tenderness. Preserve their original appearance, clothing, and style, but seamlessly adjust their pose so it looks like they were originally sharing a gentle forehead kiss in the photo. Make sure the lighting, colors, and atmosphere remain consistent with the original photo to maintain realism and harmony.",
             isVip: true
@@ -66,6 +188,7 @@ extension TSAIListDataVM {
     
     var video_Kiss:[String:Any]{
         [
+            imageName: "aiList_Kiss.gif",
             imageText: "Kiss",
             prompt:"Create a realistic and emotionally warm scene where the people in the old photo are gently kissing each other. Their pose should look completely natural and comfortable, with relaxed body language and soft, loving facial expressions. Preserve their original appearance, clothing, and style, but seamlessly adjust their pose so they look like they were originally sharing a gentle kiss in the photo. Make sure the lighting, colors, and atmosphere remain consistent with the original photo to maintain realism and harmony.",
             isVip: true
@@ -74,6 +197,7 @@ extension TSAIListDataVM {
     
     var video_BlowKiss:[String:Any]{
         [
+            imageName: "aiList_BlowKiss.gif",
             imageText: "Blow Kiss",
             prompt:"Create a realistic and natural scene where the people in the old photo are facing the camera and blowing a kiss with their hand. Their pose should look completely natural and relaxed, with warm and playful facial expressions, slightly smiling, and their body language should clearly show the gesture of blowing a kiss. Preserve their original appearance, clothing, and style, but seamlessly adjust their pose so they look like they were originally blowing a kiss in the photo. Ensure the lighting, colors, and atmosphere remain consistent with the original photo to maintain realism and harmony.",
             isVip: true
@@ -82,6 +206,7 @@ extension TSAIListDataVM {
     
     var video_Stroll:[String:Any]{
         [
+            imageName: "aiList_Stroll.gif",
             imageText: "Stroll",
             prompt:"Create a realistic and natural scene where the people in the old photo are strolling together. Their pose should look completely natural and relaxed, with comfortable walking body language and warm, happy facial expressions. Preserve their original appearance, clothing, and style, but seamlessly adjust their pose so they look like they were originally walking side by side in the photo. Ensure the lighting, colors, and atmosphere remain consistent with the original photo to maintain realism and harmony.",
             isVip: true
@@ -90,6 +215,7 @@ extension TSAIListDataVM {
     
     var video_Creat:[String:Any]{
         [
+            imageName: "",
             imageText: "Creat",
             prompt:"Photo animation, Slight head turn, normal eye blinking, smile, realistic facial movement",
             input:true,
@@ -102,6 +228,30 @@ extension TSAIListDataVM {
 //MARK: 图生图的模型
 extension TSAIListDataVM {
     
+    var ptp_AIExpandPhoto:[String:Any]{
+        [
+            imageName: "",
+           imageText: "AI Expand Photo",
+           prompt:"",
+            specialStyle:1,
+            isVip: true,
+            unionType: 1,
+            model:volcengine
+        ]
+    }
+    
+    var ptp_RemoveWatermark:[String:Any]{
+        [
+            imageName: "",
+           imageText: "Remove Watermark",
+           prompt:"",
+            specialStyle:1,
+            isVip: true,
+            unionType: 1,
+            model:kie
+        ]
+    }
+    
     var ptp_RemoveBg:[String:Any]{
         [
             imageName: "",
@@ -122,13 +272,13 @@ extension TSAIListDataVM {
             specialStyle:1,
             isVip: true,
             unionType: 1,
-            model:kie
+            model:volcengine
         ]
     }
     
     var ptp_PhotoEnhance:[String:Any]{
         [
-            imageName: "",
+            imageName: "ptp_style_Enhance",
            imageText: "Photo Enhance",
            prompt:"Upscale the image to high resolution. Do not modify colors, lighting, people, background, or any visual elements. Only improve sharpness, clarity, and pixel detail while preserving all original features",
             specialStyle:1,
@@ -140,7 +290,7 @@ extension TSAIListDataVM {
     
     var ptp_Colorize:[String:Any]{
         [
-            imageName: "",
+            imageName: "ptp_style_Colorize",
            imageText: "Colorize",
            prompt:"Add suitable colors to photos",
             specialStyle:0,
@@ -152,7 +302,7 @@ extension TSAIListDataVM {
     
     var ptp_Descratch:[String:Any]{
         [
-            imageName: "",
+            imageName: "ptp_style_Descratch",
            imageText: "Descratch",
            prompt:"Remove the photo's scratches and dirt",
             specialStyle:0,
@@ -164,7 +314,7 @@ extension TSAIListDataVM {
     
     var ptp_Enlighten:[String:Any]{
         [
-            imageName: "",
+            imageName: "ptp_style_AdjustLight",
            imageText: "Enlighten",
            prompt:"Adjust the light and darkness of the photo to make the overall look coordinated",
             specialStyle:0,
@@ -176,7 +326,7 @@ extension TSAIListDataVM {
     
     var ptp_Recreate:[String:Any]{
         [
-            imageName: "",
+            imageName: "ptp_style_Recreate",
            imageText: "Recreate",
            prompt:"Recreate damaged portraits and added suitable color for photo",
             isVip: false,
@@ -187,7 +337,7 @@ extension TSAIListDataVM {
     
     var ptp_PortraitFusion:[String:Any]{
         [
-            imageName: "",
+            imageName: "alistHome_0_PortraitFusion",
            imageText: "Portrait Fusion",
            prompt:"Merge two input images into one realistic group photo. Use only the original people, once each. Choose the background from one of the two input images — do not invent a new one. Maintain natural body positioning, realistic size, consistent lighting and shadows. Final image must look like a real, candid photo with everyone together — no added or duplicated people or animals.",
             specialStyle:0,

+ 131 - 156
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/VM/TSAIListDataVM.swift

@@ -14,200 +14,175 @@ class TSAIListDataVM {
     
     static let shared:TSAIListDataVM = TSAIListDataVM()
     
-    lazy var videoSection: TSDiscoverSectionModel = {
-        let section = TSDiscoverSectionModel()
-        section.style = .styleMore
-        section.sectionEdge =  UIEdgeInsets(top: 16, left: kDiscoverSection.left, bottom: 24, right: kDiscoverSection.right)
-        section.items = [[
-            TSDiscoverItemModel(style: .creatVideo,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .gif, imageNameds: ["aiList_SayHi"]),
-                                generateModel: TSGenerateModel(json: video_SayHi)),
-            TSDiscoverItemModel(style: .creatVideo,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .gif, imageNameds: ["aiList_Smile"]),
-                                generateModel: TSGenerateModel(json: video_Smile)),
-            TSDiscoverItemModel(style: .creatVideo,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .gif, imageNameds: ["aiList_Hug"]),
-                                generateModel: TSGenerateModel(json: video_Hug)),
-            TSDiscoverItemModel(style: .creatVideo,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .gif, imageNameds: ["aiList_HeartGesture"]),
-                                generateModel: TSGenerateModel(json: video_HeartGesture)),
-            TSDiscoverItemModel(style: .creatVideo,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .gif, imageNameds: ["aiList_ForeheadKiss"]),
-                                generateModel: TSGenerateModel(json: video_ForeheadKiss)),
-            TSDiscoverItemModel(style: .creatVideo,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .gif, imageNameds: ["aiList_Kiss"]),
-                                generateModel: TSGenerateModel(json: video_Kiss)),
-            TSDiscoverItemModel(style: .creatVideo,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .gif, imageNameds: ["aiList_BlowKiss"]),
-                                generateModel: TSGenerateModel(json: video_BlowKiss)),
-            TSDiscoverItemModel(style: .creatVideo,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .gif, imageNameds: ["aiList_Stroll"]),
-                                generateModel: TSGenerateModel(json: video_Stroll)),
-        ]]
-        return section
-    }()
     
-    lazy var portraitSection: TSDiscoverSectionModel = {
+    lazy var bannerSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
-        section.style = .fullCard
-        section.items = [
+        section.style = .banner
+        section.sectionEdge =  UIEdgeInsets(top: 0, left: kDiscoverSection.left, bottom: 0, right: kDiscoverSection.right)
+        section.items = [[
             TSDiscoverItemModel(style: .portraitFusion,
-                                viewModel: TSDiscoverBaseItemVM(
-                                    title: "Portrait Fusion".localized,
-                                    imageNamed: "aiList_PortraitFusion",
-                                    info: "Merge two portraits into one unique image seamlessly".localized
-                                ),
+                                viewModel: TSDiscoverBaseItemVM(imageNamed: "alistHome_0_PortraitFusion"),
                                 generateModel: TSGenerateModel(json: ptp_PortraitFusion)),
-        ]
-        
-        return section
-    }()
-    
-    lazy var colorizeSection: TSDiscoverSectionModel = {
-        let section = TSDiscoverSectionModel()
-        section.style = .fullCard
-        section.items = [
-            TSDiscoverItemModel(style: .colorize,
-                                viewModel: TSDiscoverBaseItemVM(
-                                    title: "Colorize".localized,
-                                    imageNamed: "aiList_Colorize",
-                                    info: "Add colors to black-and-white photos".localized
-                                ),
-                                generateModel: TSGenerateModel(json: ptp_Colorize)),
-        ]
-        
+            TSDiscoverItemModel(style: .enhance,
+                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .comparison, imageNameds: ["alistHome_0_PhotoEnhance","alistHome_1_PhotoEnhance"]),
+                                generateModel: TSGenerateModel(json: ptp_PhotoEnhance))
+        ]]
         return section
     }()
     
-    
-    lazy var Descratchection: TSDiscoverSectionModel = {
+    lazy var restoreOldPhotoSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
-        section.style = .fullCard
-        section.items = [
+        section.setTitle(title: "Restore Old Photo")
+        section.sectionEdge =  UIEdgeInsets(top: 0, left: kDiscoverSection.left, bottom: 0, right: kDiscoverSection.right)
+        section.items = [[
+            TSDiscoverItemModel(style: .recreate,
+                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .comparison, imageNameds: ["alistHome_0_Recreate","alistHome_1_Recreate"]),
+                                generateModel: TSGenerateModel(json: ptp_PortraitFusion)),
+            
             TSDiscoverItemModel(style: .descratch,
-                                viewModel: TSDiscoverBaseItemVM(
-                                    title: "Descratch".localized,
-                                    imageNamed: "aiList_Descratch",
-                                    info: "Remove scratches and dirt".localized
-                                ),
+                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .comparison, imageNameds: ["alistHome_0_Descratch","alistHome_1_Descratch"]),
                                 generateModel: TSGenerateModel(json: ptp_Descratch)),
-        ]
+            
+            TSDiscoverItemModel(style: .colorize,
+                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .comparison, imageNameds: ["alistHome_0_Colorize","alistHome_1_Colorize"]),
+                                generateModel: TSGenerateModel(json: ptp_Colorize)),
+            
+            TSDiscoverItemModel(style: .enhance,
+                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .comparison, imageNameds: ["alistHome_0_Enhance","alistHome_1_Enhance"]),
+                                generateModel: TSGenerateModel(json: ptp_PhotoEnhance)),
+            
+            TSDiscoverItemModel(style: .enlighten,
+                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .comparison, imageNameds: ["alistHome_0_AdjustLight","alistHome_1_AdjustLight"]),
+                                generateModel: TSGenerateModel(json: ptp_Enlighten)),
+        ]]
         
         return section
     }()
     
-//    lazy var creatVideoSection: TSDiscoverSectionModel = {
-//        let section = TSDiscoverSectionModel()
-//        section.style = .fullCard
-//        section.items = [
-//            TSDiscoverItemModel(style: .creatVideo,
-//                                viewModel: TSDiscoverAnimationItemVM(
-//                                    title: "Animated Photo".localized,
-//                                    info: "Turn photos into live moments".localized,
-//                                    style: .gif,
-//                                    imageNameds: ["aiList_Animated","animated_example.gif"]
-//                                ),
-//                                generateModel: TSGenerateModel(json: video_Creat)),
-//        ]
-//
-//        return section
-//    }()
-    
-    lazy var enhanceSection: TSDiscoverSectionModel = {
+
+    lazy var oldPhotoAnimationSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
-        section.style = .fullCard
-        section.items = [
-            TSDiscoverItemModel(style: .enhance,
-                                viewModel: TSDiscoverBaseItemVM(
-                                    title: "Enhance".localized,
-                                    imageNamed: "aiList_Enhance",
-                                    info: "Remove blur, sharpen, add details".localized
-                                ),
-                                generateModel: TSGenerateModel(json: ptp_PhotoEnhance)),
-        ]
-        
+        section.setTitle(title: "Old Photo Animation")
+        section.sectionEdge =  UIEdgeInsets(top: 0, left: kDiscoverSection.left, bottom: 0, right: kDiscoverSection.right)
+        section.items = [[
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Revive)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_SayHi)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_HeartGesture)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_BlowKiss)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_JazzDance)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Applaud)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Cheers)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Salute)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Stroll)),
+        ]]
         return section
     }()
     
-    lazy var RecreateSection: TSDiscoverSectionModel = {
+    lazy var loveScenesSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
-        section.style = .fullCard
-        section.items = [
-            TSDiscoverItemModel(style: .recreate,
-                                viewModel: TSDiscoverBaseItemVM(
-                                    title: "Recreate".localized,
-                                    imageNamed: "aiList_Recreate",
-                                    info: "Remove scratches and add realistic color instantly".localized
-                                ),
-                                generateModel: TSGenerateModel(json: ptp_Recreate)),
-        ]
-        
+        section.setTitle(title: "Love Scenes")
+        section.sectionEdge =  UIEdgeInsets(top: 0, left: kDiscoverSection.left, bottom: 0, right: kDiscoverSection.right)
+        section.items = [[
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_SendRose)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Hug)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_ForeheadKiss)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_SurpriseKiss)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_KissintheRain)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Kiss)),
+        ]]
         return section
     }()
     
     
-    lazy var enlightenSection: TSDiscoverSectionModel = {
+    lazy var emotionSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
-        section.style = .fullCard
-        section.items = [
-            TSDiscoverItemModel(style: .enlighten,
-                                viewModel: TSDiscoverBaseItemVM(
-                                    title: "Adjust Light".localized,
-                                    imageNamed: "aiList_Enlighten",
-                                    info: "Easily fix lighting issues on photos".localized
-                                ),
-                                generateModel: TSGenerateModel(json: ptp_Enlighten)),
-        ]
-        
+        section.setTitle(title: "Emotion")
+        section.sectionEdge =  UIEdgeInsets(top: 0, left: kDiscoverSection.left, bottom: 0, right: kDiscoverSection.right)
+        section.items = [[
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Smile)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Laugh)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_SpookyGhostface)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Shock)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Pray)),
+            TSDiscoverItemModel(style: .creatVideo,
+                                viewModel: TSDiscoverAnimationItemVM(style: .gif),
+                                generateModel: TSGenerateModel(json: video_Angry)),
+        ]]
         return section
     }()
     
-    lazy var removeSection: TSDiscoverSectionModel = {
+    
+    lazy var editPhotoSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
-        section.style = .fullCard
-        section.items = [
+        section.setTitle(title: "Edit Photo")
+        section.sectionEdge =  UIEdgeInsets(top: 0, left: kDiscoverSection.left, bottom: k_TabBar_Height+10, right: kDiscoverSection.right)
+        section.items = [[
             TSDiscoverItemModel(style: .remove,
-                                viewModel: TSDiscoverBaseItemVM(
-                                    title: "Remove Objects".localized,
-                                    imageNamed: "aiList_Remove".localized,
-                                    info: "Select the unwanted area and remove them easily".localized
-                                ),
+                                viewModel: TSDiscoverAnimationItemVM(style: .crossDissolve, imageNameds: ["alistHome_0_RemoveObjects","alistHome_1_RemoveObjects"]),
                                 generateModel: TSGenerateModel(json: ptp_Remove)),
-        ]
-        
-        return section
-    }()
-    
-    lazy var removeBgSection: TSDiscoverSectionModel = {
-        let section = TSDiscoverSectionModel()
-        section.style = .fullCard
-        section.items = [
             TSDiscoverItemModel(style: .removeBg,
-                                viewModel: TSDiscoverBaseItemVM(
-                                    title: "Remove Background".localized,
-                                    imageNamed: "aiList_RemoveBg".localized,
-                                    info: "Erase image backgrounds with one tap".localized
-                                ),
+                                viewModel: TSDiscoverAnimationItemVM(style: .crossDissolve, imageNameds: ["alistHome_0_RemoveBackground","alistHome_1_RemoveBackground"]),
                                 generateModel: TSGenerateModel(json: ptp_RemoveBg)),
-        ]
-        
+            TSDiscoverItemModel(style: .removeWatermark,
+                                viewModel: TSDiscoverAnimationItemVM(style: .crossDissolve, imageNameds: ["alistHome_0_RemoveWatermark","alistHome_1_RemoveWatermark"]),
+                                generateModel: TSGenerateModel(json: ptp_RemoveWatermark)),
+//            TSDiscoverItemModel(style: .expandPhoto,
+//                                viewModel: TSDiscoverAnimationItemVM(style: .comparison, imageNameds: ["alistHome_0_ExpandPhoto","alistHome_1_ExpandPhoto"]),
+//                                generateModel: TSGenerateModel(json: ptp_AIExpandPhoto)),
+        ]]
         return section
     }()
     
+
     lazy var listDatas: [TSDiscoverSectionModel] = {
         return [
-            videoSection,
-            portraitSection,
-            RecreateSection,
-            Descratchection,
-            colorizeSection,
-            enhanceSection,
-            enlightenSection,
-            removeSection,
-            removeBgSection
+            bannerSection,
+            restoreOldPhotoSection,
+            oldPhotoAnimationSection,
+            loveScenesSection,
+            emotionSection,
+            editPhotoSection,
         ]
     }()
     
-
-
 }

+ 4 - 6
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/View/TSAILIstBannerCell.swift

@@ -158,8 +158,6 @@ extension TSAILIstBannerCell : TYCyclePagerViewDelegate, TYCyclePagerViewDataSou
     }
 }
 
-
-
 class TSAILIstBannerBaseCellCell: TSBaseCollectionCell {
 
     lazy var ctxView: UIView = {
@@ -168,7 +166,7 @@ class TSAILIstBannerBaseCellCell: TSBaseCollectionCell {
     }()
     
     lazy var textLabel: UILabel = {
-        let textLabel = UILabel.createLabel(font: .font(size: 22,weight: .semibold),textColor: .white)
+        let textLabel = UILabel.createLabel(font: .font(name:.ZillaSlab,size: 22,weight: .semibold),textColor: .white)
         return textLabel
     }()
     
@@ -198,12 +196,12 @@ class TSAILIstBannerBaseCellCell: TSBaseCollectionCell {
             make.bottom.equalTo(-24)
         }
         
-        let rigntImageView = UIImageView.createRightArrow()
+        let rigntImageView = UIImageView.createImageView(image: .whiteRightArrow)
         bgContentView.addSubview(rigntImageView)
         rigntImageView.snp.makeConstraints { make in
             make.leading.equalTo(textLabel.snp.trailing).offset(16)
             make.width.height.equalTo(16)
-            make.centerY.equalTo(textLabel)
+            make.centerY.equalTo(textLabel.snp.centerY)
         }
   
     }
@@ -221,7 +219,7 @@ class TSAILIstBannerBaseCellCell: TSBaseCollectionCell {
 
 class TSAILIstBannerImageCellCell: TSAILIstBannerBaseCellCell {
     lazy var showImageView: UIImageView = {
-        let imageView = UIImageView.createImageView(image:.ailistBannerlShaow,contentMode: .scaleToFill)
+        let imageView = UIImageView.createImageView(image:.ailistBannerlShaow,contentMode: .scaleAspectFill)
         return imageView
     }()
     

+ 0 - 247
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/View/TSAILIstStyleMoreCell.swift

@@ -6,26 +6,6 @@
 //
 
 class TSAILIstStyleMoreCell : TSAILIstBaseCell {
-//    lazy var collectionView: UICollectionView = {
-//        let layout = TSBaseCollectionViewFlowLayout()
-//        layout.scrollDirection = .horizontal
-//        layout.minimumLineSpacing = 16
-////        layout.minimumInteritemSpacing = 16
-//        layout.itemSize = CGSize(width: 150, height: 200)
-//        let collectionView = TSBaseCollectionView(frame: .zero, collectionViewLayout: layout)
-//        collectionView.delegate = self
-//        collectionView.dataSource = self
-//        collectionView.register(TSAILIstStyleMoreBaseCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreImageCell")
-//        collectionView.register(TSAILIstStyleMoreAnimationGifCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreImageCell")
-//        collectionView.register(TSAILIstStyleMoreAnimationGifCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreAnimationGifCell")
-//        collectionView.register(TSAILIstStyleMoreComparisonCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreComparisonCell")
-//        collectionView.register(TSAILIstStyleMoreCrossDissolveCell.self, forCellWithReuseIdentifier: "TSAILIstStyleMoreCrossDissolveCell")
-//        
-//        collectionView.contentInset = kDiscoverSection
-//        return collectionView
-//    }()
-    
-    
     lazy var layout: TSBaseCollectionViewFlowLayout = {
         let layout = TSBaseCollectionViewFlowLayout()
         layout.scrollDirection = .horizontal
@@ -75,230 +55,3 @@ class TSAILIstStyleMoreCell : TSAILIstBaseCell {
     }
     
 }
-//extension TSAILIstStyleMoreCell: UICollectionViewDataSource ,UICollectionViewDelegate {
-//    func getReuseIdentifier(itemModel:TSDiscoverItemModel) -> String{
-//        if let animationModel = itemModel.viewModel as? TSDiscoverAnimationItemVM {
-//            if animationModel.style == .gif {
-//                return "TSAILIstStyleMoreAnimationGifCell"
-//            }else if animationModel.style == .comparison {
-//                return "TSAILIstStyleMoreComparisonCell"
-//            }else if animationModel.style == .crossDissolve {
-//                return "TSAILIstStyleMoreCrossDissolveCell"
-//            }
-//        }
-//        return "TSAILIstStyleMoreImageCell"
-//    }
-//    
-//    public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-//        return models.count
-//    }
-//    
-//    public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
-//        if let dbModel = models.safeObj(At: indexPath.row) {
-//            if let animationModel = dbModel.viewModel as? TSDiscoverAnimationItemVM {
-//            if animationModel.style == .gif {
-//                    if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TSAILIstStyleMoreAnimationGifCell", for: indexPath) as? TSAILIstStyleMoreAnimationGifCell{
-//                        cell.model = dbModel
-//                        return cell
-//                    }
-//                }
-//            }else{
-//                if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TSAILIstStyleMoreBaseCell", for: indexPath) as? TSAILIstStyleMoreBaseCell{
-//                    cell.model = dbModel
-//                    return cell
-//                }
-//            }
-//        }
-//        
-//        
-//        return UICollectionViewCell()
-//    }
-//
-//    public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
-//        if let model = models.safeObj(At: indexPath.row) {
-//            clickBlock?(model)
-//        }
-//    }
-//}
-//
-//class TSAILIstStyleMoreBaseCell: TSBaseCollectionCell {
-//    var model:TSDiscoverItemModel?
-//
-//    lazy var ctxView: UIView = {
-//        let ctxView = UIView()
-//        return ctxView
-//    }()
-//    
-//    
-//    lazy var shadowView: UIImageView = {
-//        let imageView = UIImageView.createImageView(image:.ailistSmallShaow,contentMode: .scaleToFill)
-//        return imageView
-//    }()
-//    
-//    lazy var textLabel: UILabel = {
-//        let textLabel = UILabel.createLabel(font: .font(name: .ZillaSlab,size: 18,weight: .bold),textColor: .white)
-//        return textLabel
-//    }()
-//    
-//    override func creatUI() {
-//        contentView.layer.borderWidth = 3
-//        contentView.layer.borderColor = "#DFD7C0".uiCGColor
-//        bgContentView.addSubview(ctxView)
-//        bgContentView.addSubview(shadowView)
-//        bgContentView.addSubview(textLabel)
-//        
-//        ctxView.snp.makeConstraints { make in
-//            make.edges.equalToSuperview()
-//        }
-//        shadowView.snp.makeConstraints { make in
-//            make.height.equalTo(40)
-//            make.leading.trailing.bottom.equalToSuperview()
-//        }
-//        
-//        textLabel.snp.makeConstraints { make in
-//            make.leading.equalTo(8)
-//            make.trailing.bottom.equalTo(-8)
-//        }
-//        
-//        
-//        textLabel.addShadow(shadowColor: UIColor.black.withAlphaComponent(0.3).cgColor, shadowOffset: CGSize(width: 0, height: 2), shadowRadius: 4, shadowOpacity: 1)
-//    }
-//}
-//class TSAILIstStyleMoreImageCell: TSAILIstStyleMoreBaseCell {
-//    override var model:TSDiscoverItemModel? {
-//        didSet {
-//            guard let model = model else { return }
-//            imageView.image = UIImage(named: model.viewModel.imageNamed)
-//            textLabel.text = model.name
-//        }
-//    }
-//    
-//    lazy var imageView: UIImageView = {
-//        let imageView = UIImageView.createImageView(contentMode: .scaleToFill)
-//        return imageView
-//    }()
-//    
-//    override func creatUI() {
-//        ctxView.addSubview(imageView)
-//        imageView.snp.makeConstraints { make in
-//            make.edges.equalToSuperview()
-//        }
-//    }
-//}
-//
-//import Kingfisher
-//class TSAILIstStyleMoreAnimationGifCell: TSAILIstStyleMoreBaseCell,AnimatedImageViewDelegate {
-//    override var model:TSDiscoverItemModel? {
-//        didSet {
-//            guard let model = model else { return }
-//            textLabel.text = model.name
-//    
-//            if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM,let imageNamed = animationModel.imageNameds.first {
-//                if let gifURL = Bundle.main.url(forResource: imageNamed, withExtension: "gif") {
-//                    animatedImageView.kf.setImage(with: gifURL, options: [.cacheOriginalImage]){ result in
-//                        switch result {
-//                        case .success(_):
-//                            kMainAfter(1.0) {
-//                                self.animatedImageView.addRealisticFlashEffect {
-//                                    self.animatedImageView.startAnimating()
-//                                }
-//                            }
-//                        case .failure(let error):
-//                            print("GIF 加载失败: \(error.localizedDescription)")
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//    }
-//
-//    lazy var animatedImageView: AnimatedImageView = {
-//        let animatedImageView = AnimatedImageView()
-//        animatedImageView.autoPlayAnimatedImage = false
-//        animatedImageView.repeatCount = .once
-//        animatedImageView.delegate = self
-//        return animatedImageView
-//    }()
-//    
-//    override func creatUI() {
-//        super.creatUI()
-//        ctxView.addSubview(animatedImageView)
-//        animatedImageView.snp.makeConstraints { make in
-//            make.edges.equalToSuperview()
-//        }
-//    }
-//    
-//    func animatedImageViewDidFinishAnimating(_ imageView: AnimatedImageView){
-////        self.animatedImageView.addRealisticFlashEffect {
-//            self.model = self.model
-////        }
-//
-//    }
-//}
-//
-//class TSAILIstStyleMoreComparisonCell: TSAILIstStyleMoreBaseCell {
-//    lazy var comparisonView: TSImagesComparisonView = {
-//        let comparisonView = TSImagesComparisonView(frame: CGRect(x: 0, y: 300, width: 300, height: 400))
-//        comparisonView.isRunloop = true
-//        comparisonView.cornerRadius = 0
-//        return comparisonView
-//    }()
-//    
-//    override var model:TSDiscoverItemModel? {
-//        didSet {
-//            guard let model = model else { return }
-//            textLabel.text = model.name
-//            if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM {
-//                var images = [UIImage]()
-//                for imageNamed in animationModel.imageNameds {
-//                    if let image = UIImage(named: imageNamed) {
-//                        images.append(image)
-//                    }
-//                }
-//                comparisonView.images = images
-//            }
-//        }
-//    }
-//    
-//    override func creatUI() {
-//        super.creatUI()
-//        ctxView.addSubview(comparisonView)
-//        comparisonView.snp.makeConstraints { make in
-//            make.edges.equalToSuperview()
-//        }
-//
-//        kMainAsync {
-//            self.comparisonView.startAnimation(direction: .rightToLeft)
-//        }
-//    }
-//}
-//
-//class TSAILIstStyleMoreCrossDissolveCell: TSAILIstStyleMoreBaseCell {
-//    override var model:TSDiscoverItemModel? {
-//        didSet {
-//            guard let model = model else { return }
-//            textLabel.text = model.name
-//            
-//            if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM {
-//                imageView.startImageTransitionAnimation(index: animationModel.index,datas: animationModel.imageNameds) { [weak self] index,imageNamed in
-//                    guard let self = self else { return }
-//                    guard let imageNamed = imageNamed as? String else { return }
-//                    animationModel.index = index
-//                    self.imageView.image = UIImage(named: imageNamed)
-//                }
-//            }
-//        }
-//    }
-//    
-//    lazy var imageView: UIImageView = {
-//        let imageView = UIImageView.createImageView(contentMode: .scaleToFill)
-//        return imageView
-//    }()
-//    
-//    override func creatUI() {
-//        ctxView.addSubview(imageView)
-//        imageView.snp.makeConstraints { make in
-//            make.edges.equalToSuperview()
-//        }
-//    }
-//}

BIN
TSLiveWallpaper/Resource/Gif/aiList_Angry.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_Applaud.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_Cheers.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_JazzDance.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_KissintheRain.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_Laugh.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_NewRevive.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_Pray.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_Revive.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_Salute.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_SendRose.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_Shock.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_SpookyGhostface.gif


BIN
TSLiveWallpaper/Resource/Gif/aiList_SurpriseKiss.gif