Parcourir la source

Merge branch '增加AI功能' into 合并-delete

# Conflicts:
#	Podfile
#	Podfile.lock
#	TSLiveWallpaper.xcodeproj/project.pbxproj
#	TSLiveWallpaper/Business/TSMusic/OC/IJKPlayer/SJIJKMediaPlaybackController.m
#	TSLiveWallpaper/Business/TSMusic/Search/Controller/SearchOnlineViewController.swift
#	TSLiveWallpaper/Business/TSMusic/SearchResult/SearchResultStateView.swift
#	TSLiveWallpaper/Business/TSMusic/SearchResult/SearchResultViewController.swift
#	TSLiveWallpaper/LaunchVC/TSLaunchVC.swift
100Years il y a 2 mois
Parent
commit
e44bfc8141
100 fichiers modifiés avec 1219 ajouts et 179 suppressions
  1. BIN
      .DS_Store
  2. 3 1
      Podfile
  3. 32 3
      Podfile.lock
  4. 274 174
      TSLiveWallpaper.xcodeproj/project.pbxproj
  5. 6 1
      TSLiveWallpaper/AppDelegate.swift
  6. 6 0
      TSLiveWallpaper/Assets.xcassets/AIList/Contents.json
  7. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Colorize.imageset/Contents.json
  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. 22 0
      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. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enhance.imageset/Contents.json
  14. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enhance.imageset/aiList_Enhance@2x.png
  15. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/aiList_Enhance.imageset/aiList_Enhance@3x.png
  16. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/ai_null.imageset/Contents.json
  17. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/ai_null.imageset/ai_null@2x.png
  18. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/ai_null.imageset/ai_null@3x.png
  19. 6 0
      TSLiveWallpaper/Assets.xcassets/AIList/example/Contents.json
  20. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_0.imageset/Contents.json
  21. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_0.imageset/ailist_example_image_new_0@2x.png
  22. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_0.imageset/ailist_example_image_new_0@3x.png
  23. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_1.imageset/Contents.json
  24. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_1.imageset/ailist_example_image_new_1@2x.png
  25. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_1.imageset/ailist_example_image_new_1@3x.png
  26. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_2.imageset/Contents.json
  27. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_2.imageset/ailist_example_image_new_2@2x.png
  28. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_new_2.imageset/ailist_example_image_new_2@3x.png
  29. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_0.imageset/Contents.json
  30. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_0.imageset/ailist_example_image_old_0@2x.png
  31. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_0.imageset/ailist_example_image_old_0@3x.png
  32. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_1.imageset/Contents.json
  33. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_1.imageset/ailist_example_image_old_1@3x.png
  34. 21 0
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_1png.imageset/Contents.json
  35. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_1png.imageset/ailist_example_image_old_1@2xpng.png
  36. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_2.imageset/Contents.json
  37. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_2.imageset/ailist_example_image_old_2@2x.png
  38. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_2.imageset/ailist_example_image_old_2@3x.png
  39. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/left_Contrast_right.imageset/Contents.json
  40. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/left_Contrast_right.imageset/left_Contrast_right@2x.png
  41. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/left_Contrast_right.imageset/left_Contrast_right@3x.png
  42. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/nav_title_ailist.imageset/Contents.json
  43. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/nav_title_ailist.imageset/nav_title_ailist@2x.png
  44. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/nav_title_ailist.imageset/nav_title_ailist@3x.png
  45. 22 0
      TSLiveWallpaper/Assets.xcassets/AIList/replace_photo.imageset/Contents.json
  46. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/replace_photo.imageset/replace_photo@2x.png
  47. BIN
      TSLiveWallpaper/Assets.xcassets/AIList/replace_photo.imageset/replace_photo@3x.png
  48. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/ai_delete.imageset/Contents.json
  49. BIN
      TSLiveWallpaper/Assets.xcassets/Common/ai_delete.imageset/ai_delete@2x.png
  50. BIN
      TSLiveWallpaper/Assets.xcassets/Common/ai_delete.imageset/ai_delete@3x.png
  51. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/btnImage_vip.imageset/Contents.json
  52. BIN
      TSLiveWallpaper/Assets.xcassets/Common/btnImage_vip.imageset/btnImage_vip@2x.png
  53. BIN
      TSLiveWallpaper/Assets.xcassets/Common/btnImage_vip.imageset/btnImage_vip@3x.png
  54. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/delete.imageset/Contents.json
  55. BIN
      TSLiveWallpaper/Assets.xcassets/Common/delete.imageset/delete@2x.png
  56. BIN
      TSLiveWallpaper/Assets.xcassets/Common/delete.imageset/delete@3x.png
  57. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/generator_failed.imageset/Contents.json
  58. BIN
      TSLiveWallpaper/Assets.xcassets/Common/generator_failed.imageset/generator_failed@2x.png
  59. BIN
      TSLiveWallpaper/Assets.xcassets/Common/generator_failed.imageset/generator_failed@3x.png
  60. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/generator_network_error.imageset/Contents.json
  61. BIN
      TSLiveWallpaper/Assets.xcassets/Common/generator_network_error.imageset/network_error@2x.png
  62. BIN
      TSLiveWallpaper/Assets.xcassets/Common/generator_network_error.imageset/network_error@3x.png
  63. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/nav_shadow.imageset/Contents.json
  64. BIN
      TSLiveWallpaper/Assets.xcassets/Common/nav_shadow.imageset/nav_shadow@2x.png
  65. BIN
      TSLiveWallpaper/Assets.xcassets/Common/nav_shadow.imageset/nav_shadow@3x.png
  66. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/record.imageset/Contents.json
  67. BIN
      TSLiveWallpaper/Assets.xcassets/Common/record.imageset/record@2x.png
  68. BIN
      TSLiveWallpaper/Assets.xcassets/Common/record.imageset/record@3x.png
  69. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/submit_btn_bg.imageset/Contents.json
  70. BIN
      TSLiveWallpaper/Assets.xcassets/Common/submit_btn_bg.imageset/submit_btn_bg@2x.png
  71. BIN
      TSLiveWallpaper/Assets.xcassets/Common/submit_btn_bg.imageset/submit_btn_bg@3x.png
  72. 22 0
      TSLiveWallpaper/Assets.xcassets/Common/submit_btn_dis_bg.imageset/Contents.json
  73. BIN
      TSLiveWallpaper/Assets.xcassets/Common/submit_btn_dis_bg.imageset/submit_btn_dis_bg@2x.png
  74. BIN
      TSLiveWallpaper/Assets.xcassets/Common/submit_btn_dis_bg.imageset/submit_btn_dis_bg@3x.png
  75. 6 0
      TSLiveWallpaper/Assets.xcassets/Hint/Contents.json
  76. 22 0
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_bad.imageset/Contents.json
  77. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_bad.imageset/hint_Colorize_bad@2x.png
  78. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_bad.imageset/hint_Colorize_bad@3x.png
  79. 22 0
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_good.imageset/Contents.json
  80. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_good.imageset/hint_Colorize_good 3@2x.png
  81. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_good.imageset/hint_Colorize_good@3x.png
  82. 22 0
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_bad.imageset/Contents.json
  83. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_bad.imageset/hint_Descratch_bad@2x.png
  84. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_bad.imageset/hint_Descratch_bad@3x.png
  85. 22 0
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_good.imageset/Contents.json
  86. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_good.imageset/hint_Descratch_good@2x.png
  87. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_good.imageset/hint_Descratch_good@3x.png
  88. 22 0
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_bad.imageset/Contents.json
  89. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_bad.imageset/hint_Enhance_bad@2x.png
  90. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_bad.imageset/hint_Enhance_bad@3x.png
  91. 22 0
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_good.imageset/Contents.json
  92. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_good.imageset/hint_Enhance_good@2x.png
  93. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_good.imageset/hint_Enhance_good@3x.png
  94. 22 0
      TSLiveWallpaper/Assets.xcassets/Hint/hint_image.imageset/Contents.json
  95. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_image.imageset/hint_image@2x.png
  96. BIN
      TSLiveWallpaper/Assets.xcassets/Hint/hint_image.imageset/hint_image@3x.png
  97. 22 0
      TSLiveWallpaper/Assets.xcassets/Tabbar/tabbar_select_ailist.imageset/Contents.json
  98. BIN
      TSLiveWallpaper/Assets.xcassets/Tabbar/tabbar_select_ailist.imageset/tabbar_select_ailist@2x.png
  99. BIN
      TSLiveWallpaper/Assets.xcassets/Tabbar/tabbar_select_ailist.imageset/tabbar_select_ailist@3x.png
  100. 206 0
      TSLiveWallpaper/Business/BusinessView/TSAppBtnView.swift

BIN
.DS_Store


+ 3 - 1
Podfile

@@ -26,7 +26,9 @@ target 'TSLiveWallpaper' do
   pod 'Localize-Swift', '~> 3.2'
   pod 'BetterSegmentedControl', '~> 2.0'
   pod 'AFNetworking',:git => "https://github.com/xlDon/AFNetworking-PrivacyInfo.git"
-  
+  pod 'RealmSwift', '~>10'
+  pod 'TSSmalCoacopods', :path => '../TSSmalCoacopods'
+  pod "DynamicBlurView"
 end
 
 

+ 32 - 3
Podfile.lock

@@ -16,6 +16,7 @@ PODS:
     - AFNetworking/NSURLSession
   - Alamofire (5.10.2)
   - BetterSegmentedControl (2.0.1)
+  - DynamicBlurView (5.0.3)
   - IJKMediaFramework (0.8.9)
   - Kingfisher (7.10.0)
   - KLExtension (0.1.0)
@@ -30,6 +31,11 @@ PODS:
   - Masonry (1.1.0)
   - MJRefresh (3.7.5)
   - ObjectMapper (4.2.0)
+  - Realm (10.54.4):
+    - Realm/Headers (= 10.54.4)
+  - Realm/Headers (10.54.4)
+  - RealmSwift (10.54.4):
+    - Realm (= 10.54.4)
   - SJBaseVideoPlayer (3.7.7.1):
     - Masonry
     - SJBaseVideoPlayer/AVPlayer (= 3.7.7.1)
@@ -93,6 +99,12 @@ PODS:
   - SVProgressHUD (2.3.1):
     - SVProgressHUD/Core (= 2.3.1)
   - SVProgressHUD/Core (2.3.1)
+  - TSSmalCoacopods (1.0.0):
+    - Alamofire
+    - Kingfisher (= 7.10.0)
+    - ObjectMapper (~> 4.2)
+    - SnapKit
+    - SVProgressHUD
   - TSVideoKit (0.1.0):
     - AFNetworking
     - Alamofire
@@ -108,8 +120,10 @@ PODS:
   - YYModel (1.0.4)
 
 DEPENDENCIES:
+  - AFNetworking (from `https://github.com/xlDon/AFNetworking-PrivacyInfo.git`)
   - Alamofire
   - BetterSegmentedControl (~> 2.0)
+  - DynamicBlurView
   - IJKMediaFramework (from `https://github.com/debugly/ijkplayer/releases/download/k0.8.9/IJKMediaFramework.spec.json`)
   - Kingfisher (= 7.10.0)
   - KLExtension (from `https://gitee.com/WanlanNeel/klextension.git`)
@@ -118,23 +132,27 @@ DEPENDENCIES:
   - MarqueeLabel
   - MJRefresh
   - ObjectMapper (= 4.2)
+  - RealmSwift (~> 10)
   - SnapKit
   - SVProgressHUD
+  - TSSmalCoacopods (from `../TSSmalCoacopods`)
   - TSVideoKit (from `https://gitee.com/WanlanNeel/tsvideo-kit.git`, branch `feature/local`)
   - TYCyclePagerView
   - TZImagePickerController
 
 SPEC REPOS:
   trunk:
-    - AFNetworking
     - Alamofire
     - BetterSegmentedControl
+    - DynamicBlurView
     - Kingfisher
     - Localize-Swift
     - MarqueeLabel
     - Masonry
     - MJRefresh
     - ObjectMapper
+    - Realm
+    - RealmSwift
     - SJBaseVideoPlayer
     - SJUIKit
     - SJVideoPlayer
@@ -145,17 +163,24 @@ SPEC REPOS:
     - YYModel
 
 EXTERNAL SOURCES:
+  AFNetworking:
+    :git: https://github.com/xlDon/AFNetworking-PrivacyInfo.git
   IJKMediaFramework:
     :podspec: https://github.com/debugly/ijkplayer/releases/download/k0.8.9/IJKMediaFramework.spec.json
   KLExtension:
     :git: https://gitee.com/WanlanNeel/klextension.git
   KLTips:
     :git: https://gitee.com/WanlanNeel/kltips.git
+  TSSmalCoacopods:
+    :path: "../TSSmalCoacopods"
   TSVideoKit:
     :branch: feature/local
     :git: https://gitee.com/WanlanNeel/tsvideo-kit.git
 
 CHECKOUT OPTIONS:
+  AFNetworking:
+    :commit: dd04a39ae8fb760cfe62ad4c2afe55df8d81de28
+    :git: https://github.com/xlDon/AFNetworking-PrivacyInfo.git
   KLExtension:
     :commit: 227fcc71c8057c68631a9614265bd584c48ada34
     :git: https://gitee.com/WanlanNeel/klextension.git
@@ -167,9 +192,10 @@ CHECKOUT OPTIONS:
     :git: https://gitee.com/WanlanNeel/tsvideo-kit.git
 
 SPEC CHECKSUMS:
-  AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
+  AFNetworking: 07fdd55e08bfc815311d558d62b0f9660ef83d1e
   Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496
   BetterSegmentedControl: 09607b27861d49cbce48b7673b74f9150a3d371a
+  DynamicBlurView: b57e2f6aa33f85b2bcca272265162a3c7c5cc499
   IJKMediaFramework: aa80bbca8d5443171b2c4d5cc025cc013b2172e3
   Kingfisher: a18f05d3b6d37d8650ee4a3e61d57a28fc6207f6
   KLExtension: f8b2a92125ad4bbfc8920ed5e7269aefcdcaa0b3
@@ -179,16 +205,19 @@ SPEC CHECKSUMS:
   Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
   MJRefresh: fdf5e979eb406a0341468932d1dfc8b7f9fce961
   ObjectMapper: 1eb41f610210777375fa806bf161dc39fb832b81
+  Realm: 8b5cda39a41f17a1734da2f39c6004eb8745587a
+  RealmSwift: 0b4f808fed6898f1f6c26f501f740efd80dff0b4
   SJBaseVideoPlayer: b3122de12225b27b71bd9a8a1f08f4dcf2f4e5ec
   SJUIKit: a40111941e408cc17d4c1c23495aa92999e814b0
   SJVideoPlayer: 4f09814f58522e0975cb2dccfda925f6c8643467
   SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
   SVProgressHUD: 4837c74bdfe2e51e8821c397825996a8d7de6e22
+  TSSmalCoacopods: 6aa97167f0c76b16fc7d1fd1eb198bb6aece4f68
   TSVideoKit: 922402ea051d72e78224f22d37c10fdb2e378f60
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
   TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
 
-PODFILE CHECKSUM: c7bc029bbc53876c8dd3936e0465b5ec7e834593
+PODFILE CHECKSUM: a6ed03a6ab5b7f6266e98585bcb3ab1aa881185e
 
 COCOAPODS: 1.16.2

+ 274 - 174
TSLiveWallpaper.xcodeproj/project.pbxproj

@@ -94,7 +94,6 @@
 		60553FD92D3B54A400BAAD7F /* GradientBackgroundModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553FCE2D3B54A400BAAD7F /* GradientBackgroundModifier.swift */; };
 		60553FDB2D3B7CC600BAAD7F /* FitManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553FDA2D3B7CC600BAAD7F /* FitManager.swift */; };
 		60553FDD2D3B84E700BAAD7F /* UIScrollView+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553FDC2D3B84E700BAAD7F /* UIScrollView+Ext.swift */; };
-		60553FDF2D3B850C00BAAD7F /* TimeInterval+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553FDE2D3B850C00BAAD7F /* TimeInterval+Ext.swift */; };
 		60553FE32D3DF12200BAAD7F /* CustomSegementItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553FE22D3DF12200BAAD7F /* CustomSegementItem.swift */; };
 		606372D82D545E6C005C82CF /* Example Music.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 606372D72D545E6C005C82CF /* Example Music.mp3 */; };
 		606372DA2D545F0D005C82CF /* ExampleIniter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606372D92D545F0D005C82CF /* ExampleIniter.swift */; };
@@ -104,43 +103,21 @@
 		60F82C0F2D43295100FFB08D /* MusicHomeContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F82C0E2D43295100FFB08D /* MusicHomeContainerViewController.swift */; };
 		60F82C112D43298800FFB08D /* MusicContainerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F82C102D43298800FFB08D /* MusicContainerViewModel.swift */; };
 		A81CA4652D15685F00A3AAC8 /* TSLaunchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4642D15685D00A3AAC8 /* TSLaunchVC.swift */; };
-		A81CA4692D156AB600A3AAC8 /* TSBaseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4682D156AAB00A3AAC8 /* TSBaseVC.swift */; };
-		A81CA46B2D156BDC00A3AAC8 /* TSBaseNavigationC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA46A2D156BC600A3AAC8 /* TSBaseNavigationC.swift */; };
 		A81CA46E2D156C7000A3AAC8 /* GlobalImports.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA46D2D156C6F00A3AAC8 /* GlobalImports.swift */; };
-		A81CA4722D1575B900A3AAC8 /* TSBaseNavigationBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4712D1575B800A3AAC8 /* TSBaseNavigationBarView.swift */; };
-		A81CA4772D15779E00A3AAC8 /* UIColor+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4762D15779400A3AAC8 /* UIColor+Ex.swift */; };
-		A81CA4792D1577E800A3AAC8 /* NSString+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4782D1577E100A3AAC8 /* NSString+Ex.swift */; };
-		A81CA47B2D15784800A3AAC8 /* Int+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA47A2D15784400A3AAC8 /* Int+Ex.swift */; };
 		A81CA47F2D15789C00A3AAC8 /* TSConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA47E2D15789A00A3AAC8 /* TSConfig.swift */; };
-		A81CA4812D157B1300A3AAC8 /* UIFont+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4802D157B0A00A3AAC8 /* UIFont+Ex.swift */; };
 		A81CA4832D157F5C00A3AAC8 /* UIImageView+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4822D157F5200A3AAC8 /* UIImageView+Ex.swift */; };
 		A81CA4852D1582A600A3AAC8 /* UIButton+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4842D15829E00A3AAC8 /* UIButton+Ex.swift */; };
-		A81CA4872D15832900A3AAC8 /* UILabel+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4862D15830E00A3AAC8 /* UILabel+Ex.swift */; };
 		A81CA48B2D15843700A3AAC8 /* TSCommonTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA48A2D15843500A3AAC8 /* TSCommonTool.swift */; };
 		A81CA48F2D15857B00A3AAC8 /* TSTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA48E2D15857900A3AAC8 /* TSTabBarController.swift */; };
 		A81CA4952D1652B500A3AAC8 /* TSEditLiveVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4942D1652B300A3AAC8 /* TSEditLiveVC.swift */; };
 		A81CA4972D1652BD00A3AAC8 /* TSRandomWallpaperVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4962D1652BB00A3AAC8 /* TSRandomWallpaperVC.swift */; };
 		A81CA4992D1652C400A3AAC8 /* TSMineVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4982D1652C200A3AAC8 /* TSMineVC.swift */; };
 		A81CA49B2D1652CA00A3AAC8 /* TSHomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA49A2D1652C900A3AAC8 /* TSHomeVC.swift */; };
-		A81CA49D2D1654B600A3AAC8 /* UITableView+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA49C2D1654A500A3AAC8 /* UITableView+Ex.swift */; };
 		A81CA49F2D1655CE00A3AAC8 /* UICollectionView+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA49E2D1655BE00A3AAC8 /* UICollectionView+Ex.swift */; };
-		A81CA4A12D166F3C00A3AAC8 /* TSBasicItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4A02D166F3A00A3AAC8 /* TSBasicItemModel.swift */; };
 		A81CA4A42D16748800A3AAC8 /* TSViewTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4A32D16748700A3AAC8 /* TSViewTool.swift */; };
-		A81CA4A62D16915F00A3AAC8 /* Dictionary+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4A52D16914C00A3AAC8 /* Dictionary+Ex.swift */; };
-		A81CA4A82D16918900A3AAC8 /* Array+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4A72D16918400A3AAC8 /* Array+Ex.swift */; };
 		A81CA4AA2D16943800A3AAC8 /* TSMineCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4A92D16943200A3AAC8 /* TSMineCell.swift */; };
-		A81CA4AD2D16944B00A3AAC8 /* TSBaseTabViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4AB2D16944B00A3AAC8 /* TSBaseTabViewCell.swift */; };
-		A81CA4AE2D16944B00A3AAC8 /* TSBaseCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4AC2D16944B00A3AAC8 /* TSBaseCollectionCell.swift */; };
-		A81CA4B02D1694C900A3AAC8 /* Date+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4AF2D1694C200A3AAC8 /* Date+Ex.swift */; };
-		A81CA4B42D169C2E00A3AAC8 /* TSToastTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4B32D169C2600A3AAC8 /* TSToastTool.swift */; };
-		A81CA4B62D169F2400A3AAC8 /* WindowHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4B52D169F1A00A3AAC8 /* WindowHelper.swift */; };
 		A81CA4B82D16A6BD00A3AAC8 /* View+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4B72D16A6B600A3AAC8 /* View+Ex.swift */; };
 		A81CA4BA2D16B6E300A3AAC8 /* TSHomeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81CA4B92D16B6DC00A3AAC8 /* TSHomeCell.swift */; };
-		A81F5B2B2D18F9C600740085 /* UICollectionView+More.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B2A2D18F9C600740085 /* UICollectionView+More.swift */; };
-		A81F5B322D18FA2E00740085 /* Component.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B2F2D18FA2E00740085 /* Component.swift */; };
-		A81F5B332D18FA2E00740085 /* CommonSectionComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B302D18FA2E00740085 /* CommonSectionComponent.swift */; };
-		A81F5B342D18FA2E00740085 /* CollectionViewComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B2E2D18FA2E00740085 /* CollectionViewComponent.swift */; };
-		A81F5B392D19037800740085 /* TSBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B382D19037100740085 /* TSBaseModel.swift */; };
 		A81F5B3C2D19087100740085 /* TSRandomWallpaperCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B3B2D19086B00740085 /* TSRandomWallpaperCell.swift */; };
 		A81F5B3E2D19088100740085 /* TSRandomWallpaperBannerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B3D2D19087600740085 /* TSRandomWallpaperBannerCell.swift */; };
 		A81F5B402D194EA900740085 /* UIDevice+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B3F2D194EA900740085 /* UIDevice+Extension.swift */; };
@@ -149,10 +126,8 @@
 		A81F5B472D19562800740085 /* EditorVideoControlMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B462D19562800740085 /* EditorVideoControlMaskView.swift */; };
 		A81F5B492D1956EA00740085 /* UIScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B482D1956E600740085 /* UIScreen.swift */; };
 		A81F5B4B2D19658300740085 /* PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B4A2D19658300740085 /* PhotoTools.swift */; };
-		A81F5B4D2D1965F800740085 /* UIImage+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B4C2D1965EF00740085 /* UIImage+Ex.swift */; };
 		A81F5B4F2D19674600740085 /* AVAsset+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B4E2D19673500740085 /* AVAsset+Ex.swift */; };
 		A81F5B522D19685900740085 /* response.json in Resources */ = {isa = PBXBuildFile; fileRef = A81F5B512D19685900740085 /* response.json */; };
-		A81F5B542D1969E000740085 /* CGFloat+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B532D1969D500740085 /* CGFloat+Ex.swift */; };
 		A81F5B562D1982BF00740085 /* TSImageDataCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B552D1982A900740085 /* TSImageDataCenter.swift */; };
 		A81F5B5B2D1A5F2300740085 /* TSHomeTopBannerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B5A2D1A5F1800740085 /* TSHomeTopBannerCell.swift */; };
 		A81F5B5D2D1A906C00740085 /* TSHomeDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81F5B5C2D1A905800740085 /* TSHomeDataModel.swift */; };
@@ -168,15 +143,46 @@
 		A839463F2D1D6FB700ABFF0D /* TSLiveWallpaperTutorialsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A839463E2D1D6FB600ABFF0D /* TSLiveWallpaperTutorialsVC.swift */; };
 		A83946432D1D701500ABFF0D /* TSLiveWallpaperCopyrightVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A83946422D1D701300ABFF0D /* TSLiveWallpaperCopyrightVC.swift */; };
 		A8477C972D22737900DF0B93 /* TSBusinessWebVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8477C962D22737800DF0B93 /* TSBusinessWebVC.swift */; };
-		A8477C992D2291F800DF0B93 /* UserDefault+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8477C982D2291F100DF0B93 /* UserDefault+Ex.swift */; };
 		A8477C9F2D22ABDA00DF0B93 /* TSEditLiveEidtCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8477C9E2D22ABD500DF0B93 /* TSEditLiveEidtCell.swift */; };
 		A84C239A2D1E3A4300B61B55 /* GPVideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A84C23962D1E3A4300B61B55 /* GPVideoPlayerView.swift */; };
 		A84C239B2D1E3A4300B61B55 /* GPVideoClipperController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A84C23982D1E3A4300B61B55 /* GPVideoClipperController.swift */; };
 		A84C239C2D1E3A4300B61B55 /* GPVideoClipperView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A84C23972D1E3A4300B61B55 /* GPVideoClipperView.swift */; };
 		A84C239D2D1E3A4300B61B55 /* GPVideoConfigMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A84C23952D1E3A4300B61B55 /* GPVideoConfigMaker.swift */; };
 		A84C239F2D1E88CD00B61B55 /* TSFileManagerTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A84C239E2D1E88C500B61B55 /* TSFileManagerTool.swift */; };
-		A87833202D293EEC00E47F2C /* TSSimpleTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A878331F2D293ED300E47F2C /* TSSimpleTableView.swift */; };
-		A8C4C01D2D2397B9003C46FC /* UIViewController+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C4C01C2D2397B4003C46FC /* UIViewController+Ex.swift */; };
+		A868577C2DF819BB0089D222 /* TSDBManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868577B2DF819BA0089D222 /* TSDBManager.swift */; };
+		A868577E2DF81A940089D222 /* TSDBActionInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868577D2DF81A930089D222 /* TSDBActionInfoModel.swift */; };
+		A86857822DF81AD40089D222 /* TSActionInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857812DF81ACF0089D222 /* TSActionInfoModel.swift */; };
+		A86857872DF81B660089D222 /* TSNetWork+Business.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857852DF81B660089D222 /* TSNetWork+Business.swift */; };
+		A86857882DF81B660089D222 /* TSNetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857842DF81B660089D222 /* TSNetworkManager.swift */; };
+		A86857892DF81B660089D222 /* TSNetworkManager+Loading.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857862DF81B660089D222 /* TSNetworkManager+Loading.swift */; };
+		A868578C2DF843F90089D222 /* TSRealmManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868578A2DF843F90089D222 /* TSRealmManager.swift */; };
+		A86857922DF845F60089D222 /* TSGeneratoringAnimationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857902DF845F60089D222 /* TSGeneratoringAnimationView.swift */; };
+		A86857932DF845F60089D222 /* TSGeneratorErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857912DF845F60089D222 /* TSGeneratorErrorView.swift */; };
+		A86857942DF845F60089D222 /* TSGeneratorloadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868578F2DF845F60089D222 /* TSGeneratorloadingView.swift */; };
+		A86857982DF846FE0089D222 /* TSDynamicBlurView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857972DF846FB0089D222 /* TSDynamicBlurView.swift */; };
+		A868579A2DF915950089D222 /* TSPurchaseEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857992DF9158C0089D222 /* TSPurchaseEnum.swift */; };
+		A868579E2DF915E90089D222 /* TSPurchaseBusiness.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868579D2DF915DD0089D222 /* TSPurchaseBusiness.swift */; };
+		A86857A12DF91EB90089D222 /* TSAIListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857A02DF91EB80089D222 /* TSAIListVC.swift */; };
+		A86857A32DF91F690089D222 /* TSAILIstCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857A22DF91F680089D222 /* TSAILIstCell.swift */; };
+		A86857A82DF9204B0089D222 /* TSPhotoPickerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857A62DF9204B0089D222 /* TSPhotoPickerManager.swift */; };
+		A86857AC2DF921160089D222 /* TSAIListHintBaseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857AA2DF921160089D222 /* TSAIListHintBaseVC.swift */; };
+		A86857B02DF921970089D222 /* TSAppBtnView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857AE2DF921970089D222 /* TSAppBtnView.swift */; };
+		A86857B22DF921F90089D222 /* TSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857B12DF921F90089D222 /* TSView.swift */; };
+		A86857B72DF9258D0089D222 /* TSAIUploadPhotoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857B52DF9258D0089D222 /* TSAIUploadPhotoVC.swift */; };
+		A86857B92DF925A20089D222 /* TSAIList+Enmu.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857B82DF9259C0089D222 /* TSAIList+Enmu.swift */; };
+		A86857BC2DF926110089D222 /* TSAIListHistoryVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857BB2DF9260D0089D222 /* TSAIListHistoryVC.swift */; };
+		A86857BE2DF926220089D222 /* TSAIListHistoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857BD2DF9261D0089D222 /* TSAIListHistoryCell.swift */; };
+		A86857C02DF926870089D222 /* TSPageNullView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857BF2DF926870089D222 /* TSPageNullView.swift */; };
+		A86857C22DF926ED0089D222 /* TSPhotoSizeHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857C12DF926EB0089D222 /* TSPhotoSizeHelper.swift */; };
+		A86857C42DF92AEB0089D222 /* UIFont+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857C32DF92AE30089D222 /* UIFont+Ex.swift */; };
+		A86857C62DF92BE70089D222 /* ZillaSlab-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A86857C52DF92BE70089D222 /* ZillaSlab-Bold.ttf */; };
+		A86857CF2DF977640089D222 /* TSAIListPhotoGeneratorVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857CE2DF977630089D222 /* TSAIListPhotoGeneratorVC.swift */; };
+		A86857D12DF977980089D222 /* TSAIListPhotoGeneratorVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857D02DF9778B0089D222 /* TSAIListPhotoGeneratorVM.swift */; };
+		A86857D32DF978740089D222 /* TSProgressState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857D22DF978730089D222 /* TSProgressState.swift */; };
+		A86857D52DF97A2A0089D222 /* TSAIExpandChangeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857D42DF97A2A0089D222 /* TSAIExpandChangeView.swift */; };
+		A86857D72DF983620089D222 /* generat_loading.gif in Resources */ = {isa = PBXBuildFile; fileRef = A86857D62DF983620089D222 /* generat_loading.gif */; };
+		A86857DA2DF994600089D222 /* TSAIPhotoDetailsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857D92DF9945F0089D222 /* TSAIPhotoDetailsVC.swift */; };
+		A86857DD2DF99C200089D222 /* TSImageIPanComparisonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86857DC2DF99C200089D222 /* TSImageIPanComparisonView.swift */; };
 		A8C4C0982D242154003C46FC /* LivePhoto.swift in Sources */ = {isa = PBXBuildFile; fileRef = A858EE162D1CF49B004B680F /* LivePhoto.swift */; };
 		A8C4C0A42D24218A003C46FC /* metadata.mov in Resources */ = {isa = PBXBuildFile; fileRef = A8C4C09E2D24218A003C46FC /* metadata.mov */; };
 		A8C4C0A52D24218A003C46FC /* Converter4Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C4C09B2D24218A003C46FC /* Converter4Video.swift */; };
@@ -190,14 +196,9 @@
 		A8E56BF62D1520EC003C54AF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8E56BEC2D1520EC003C54AF /* AppDelegate.swift */; };
 		A8E56BF92D1520EC003C54AF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A8E56BED2D1520EC003C54AF /* Assets.xcassets */; };
 		A8E56BFB2D1520EC003C54AF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A8E56BF02D1520EC003C54AF /* LaunchScreen.storyboard */; };
-		A8F76C3C2D35026200AA6E93 /* TSPurchaseMembershipVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F76C3B2D35026100AA6E93 /* TSPurchaseMembershipVC.swift */; };
 		A8F76C422D350A9600AA6E93 /* TSPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F76C3E2D350A9600AA6E93 /* TSPurchaseManager.swift */; };
-		A8F76C472D3510FE00AA6E93 /* TSNetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F76C462D3510FA00AA6E93 /* TSNetworkManager.swift */; };
 		A8F76C4D2D3747B400AA6E93 /* TSPurchaseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F76C4C2D3747AB00AA6E93 /* TSPurchaseVC.swift */; };
-		A8F774522D3757E700AA6E93 /* Color+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F774512D3757DF00AA6E93 /* Color+Ex.swift */; };
-		A8F774542D37581F00AA6E93 /* Font+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F774532D37581700AA6E93 /* Font+Ex.swift */; };
 		A8F778AE2D1AC12400BF55D5 /* TSRandomWallpaperBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F778AD2D1AC12100BF55D5 /* TSRandomWallpaperBrowseView.swift */; };
-		A8F778B02D1AC17500BF55D5 /* TSBaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F778AF2D1AC16F00BF55D5 /* TSBaseView.swift */; };
 		A8F778B22D1BA07200BF55D5 /* TSRandomWallpaperBrowseSelectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F778B12D1BA07000BF55D5 /* TSRandomWallpaperBrowseSelectView.swift */; };
 		A8F778B42D1BB8F600BF55D5 /* PhotoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F778B32D1BB8F300BF55D5 /* PhotoManager.swift */; };
 		A8F778B72D1BE9A500BF55D5 /* TSLiveWallpaperBrowseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F778B62D1BE9A100BF55D5 /* TSLiveWallpaperBrowseVC.swift */; };
@@ -294,7 +295,6 @@
 		60553FCE2D3B54A400BAAD7F /* GradientBackgroundModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientBackgroundModifier.swift; sourceTree = "<group>"; };
 		60553FDA2D3B7CC600BAAD7F /* FitManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FitManager.swift; sourceTree = "<group>"; };
 		60553FDC2D3B84E700BAAD7F /* UIScrollView+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIScrollView+Ext.swift"; sourceTree = "<group>"; };
-		60553FDE2D3B850C00BAAD7F /* TimeInterval+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TimeInterval+Ext.swift"; sourceTree = "<group>"; };
 		60553FE22D3DF12200BAAD7F /* CustomSegementItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSegementItem.swift; sourceTree = "<group>"; };
 		606372D72D545E6C005C82CF /* Example Music.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = "Example Music.mp3"; sourceTree = "<group>"; };
 		606372D92D545F0D005C82CF /* ExampleIniter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleIniter.swift; sourceTree = "<group>"; };
@@ -313,43 +313,21 @@
 		60F82C102D43298800FFB08D /* MusicContainerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicContainerViewModel.swift; sourceTree = "<group>"; };
 		71E5F623537702A8306DF3C8 /* Pods-TSLiveWallpaper.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TSLiveWallpaper.release.xcconfig"; path = "Target Support Files/Pods-TSLiveWallpaper/Pods-TSLiveWallpaper.release.xcconfig"; sourceTree = "<group>"; };
 		A81CA4642D15685D00A3AAC8 /* TSLaunchVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSLaunchVC.swift; sourceTree = "<group>"; };
-		A81CA4682D156AAB00A3AAC8 /* TSBaseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseVC.swift; sourceTree = "<group>"; };
-		A81CA46A2D156BC600A3AAC8 /* TSBaseNavigationC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseNavigationC.swift; sourceTree = "<group>"; };
 		A81CA46D2D156C6F00A3AAC8 /* GlobalImports.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalImports.swift; sourceTree = "<group>"; };
-		A81CA4712D1575B800A3AAC8 /* TSBaseNavigationBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseNavigationBarView.swift; sourceTree = "<group>"; };
-		A81CA4762D15779400A3AAC8 /* UIColor+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Ex.swift"; sourceTree = "<group>"; };
-		A81CA4782D1577E100A3AAC8 /* NSString+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSString+Ex.swift"; sourceTree = "<group>"; };
-		A81CA47A2D15784400A3AAC8 /* Int+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Int+Ex.swift"; sourceTree = "<group>"; };
 		A81CA47E2D15789A00A3AAC8 /* TSConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSConfig.swift; sourceTree = "<group>"; };
-		A81CA4802D157B0A00A3AAC8 /* UIFont+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+Ex.swift"; sourceTree = "<group>"; };
 		A81CA4822D157F5200A3AAC8 /* UIImageView+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImageView+Ex.swift"; sourceTree = "<group>"; };
 		A81CA4842D15829E00A3AAC8 /* UIButton+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+Ex.swift"; sourceTree = "<group>"; };
-		A81CA4862D15830E00A3AAC8 /* UILabel+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+Ex.swift"; sourceTree = "<group>"; };
 		A81CA48A2D15843500A3AAC8 /* TSCommonTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSCommonTool.swift; sourceTree = "<group>"; };
 		A81CA48E2D15857900A3AAC8 /* TSTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTabBarController.swift; sourceTree = "<group>"; };
 		A81CA4942D1652B300A3AAC8 /* TSEditLiveVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSEditLiveVC.swift; sourceTree = "<group>"; };
 		A81CA4962D1652BB00A3AAC8 /* TSRandomWallpaperVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSRandomWallpaperVC.swift; sourceTree = "<group>"; };
 		A81CA4982D1652C200A3AAC8 /* TSMineVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSMineVC.swift; sourceTree = "<group>"; };
 		A81CA49A2D1652C900A3AAC8 /* TSHomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSHomeVC.swift; sourceTree = "<group>"; };
-		A81CA49C2D1654A500A3AAC8 /* UITableView+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableView+Ex.swift"; sourceTree = "<group>"; };
 		A81CA49E2D1655BE00A3AAC8 /* UICollectionView+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UICollectionView+Ex.swift"; sourceTree = "<group>"; };
-		A81CA4A02D166F3A00A3AAC8 /* TSBasicItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBasicItemModel.swift; sourceTree = "<group>"; };
 		A81CA4A32D16748700A3AAC8 /* TSViewTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSViewTool.swift; sourceTree = "<group>"; };
-		A81CA4A52D16914C00A3AAC8 /* Dictionary+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Dictionary+Ex.swift"; sourceTree = "<group>"; };
-		A81CA4A72D16918400A3AAC8 /* Array+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+Ex.swift"; sourceTree = "<group>"; };
 		A81CA4A92D16943200A3AAC8 /* TSMineCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSMineCell.swift; sourceTree = "<group>"; };
-		A81CA4AB2D16944B00A3AAC8 /* TSBaseTabViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseTabViewCell.swift; sourceTree = "<group>"; };
-		A81CA4AC2D16944B00A3AAC8 /* TSBaseCollectionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseCollectionCell.swift; sourceTree = "<group>"; };
-		A81CA4AF2D1694C200A3AAC8 /* Date+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+Ex.swift"; sourceTree = "<group>"; };
-		A81CA4B32D169C2600A3AAC8 /* TSToastTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSToastTool.swift; sourceTree = "<group>"; };
-		A81CA4B52D169F1A00A3AAC8 /* WindowHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowHelper.swift; sourceTree = "<group>"; };
 		A81CA4B72D16A6B600A3AAC8 /* View+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Ex.swift"; sourceTree = "<group>"; };
 		A81CA4B92D16B6DC00A3AAC8 /* TSHomeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSHomeCell.swift; sourceTree = "<group>"; };
-		A81F5B2A2D18F9C600740085 /* UICollectionView+More.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UICollectionView+More.swift"; sourceTree = "<group>"; };
-		A81F5B2E2D18FA2E00740085 /* CollectionViewComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionViewComponent.swift; sourceTree = "<group>"; };
-		A81F5B2F2D18FA2E00740085 /* Component.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Component.swift; sourceTree = "<group>"; };
-		A81F5B302D18FA2E00740085 /* CommonSectionComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonSectionComponent.swift; sourceTree = "<group>"; };
-		A81F5B382D19037100740085 /* TSBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseModel.swift; sourceTree = "<group>"; };
 		A81F5B3B2D19086B00740085 /* TSRandomWallpaperCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSRandomWallpaperCell.swift; sourceTree = "<group>"; };
 		A81F5B3D2D19087600740085 /* TSRandomWallpaperBannerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSRandomWallpaperBannerCell.swift; sourceTree = "<group>"; };
 		A81F5B3F2D194EA900740085 /* UIDevice+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+Extension.swift"; sourceTree = "<group>"; };
@@ -358,10 +336,8 @@
 		A81F5B462D19562800740085 /* EditorVideoControlMaskView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorVideoControlMaskView.swift; sourceTree = "<group>"; };
 		A81F5B482D1956E600740085 /* UIScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIScreen.swift; sourceTree = "<group>"; };
 		A81F5B4A2D19658300740085 /* PhotoTools.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoTools.swift; sourceTree = "<group>"; };
-		A81F5B4C2D1965EF00740085 /* UIImage+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Ex.swift"; sourceTree = "<group>"; };
 		A81F5B4E2D19673500740085 /* AVAsset+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AVAsset+Ex.swift"; sourceTree = "<group>"; };
 		A81F5B512D19685900740085 /* response.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = response.json; sourceTree = "<group>"; };
-		A81F5B532D1969D500740085 /* CGFloat+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CGFloat+Ex.swift"; sourceTree = "<group>"; };
 		A81F5B552D1982A900740085 /* TSImageDataCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSImageDataCenter.swift; sourceTree = "<group>"; };
 		A81F5B5A2D1A5F1800740085 /* TSHomeTopBannerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSHomeTopBannerCell.swift; sourceTree = "<group>"; };
 		A81F5B5C2D1A905800740085 /* TSHomeDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSHomeDataModel.swift; sourceTree = "<group>"; };
@@ -377,7 +353,6 @@
 		A839463E2D1D6FB600ABFF0D /* TSLiveWallpaperTutorialsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSLiveWallpaperTutorialsVC.swift; sourceTree = "<group>"; };
 		A83946422D1D701300ABFF0D /* TSLiveWallpaperCopyrightVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSLiveWallpaperCopyrightVC.swift; sourceTree = "<group>"; };
 		A8477C962D22737800DF0B93 /* TSBusinessWebVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBusinessWebVC.swift; sourceTree = "<group>"; };
-		A8477C982D2291F100DF0B93 /* UserDefault+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefault+Ex.swift"; sourceTree = "<group>"; };
 		A8477C9E2D22ABD500DF0B93 /* TSEditLiveEidtCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSEditLiveEidtCell.swift; sourceTree = "<group>"; };
 		A84C23952D1E3A4300B61B55 /* GPVideoConfigMaker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GPVideoConfigMaker.swift; sourceTree = "<group>"; };
 		A84C23962D1E3A4300B61B55 /* GPVideoPlayerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GPVideoPlayerView.swift; sourceTree = "<group>"; };
@@ -385,8 +360,40 @@
 		A84C23982D1E3A4300B61B55 /* GPVideoClipperController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GPVideoClipperController.swift; sourceTree = "<group>"; };
 		A84C239E2D1E88C500B61B55 /* TSFileManagerTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSFileManagerTool.swift; sourceTree = "<group>"; };
 		A858EE162D1CF49B004B680F /* LivePhoto.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LivePhoto.swift; sourceTree = "<group>"; };
-		A878331F2D293ED300E47F2C /* TSSimpleTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSimpleTableView.swift; sourceTree = "<group>"; };
-		A8C4C01C2D2397B4003C46FC /* UIViewController+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+Ex.swift"; sourceTree = "<group>"; };
+		A868577B2DF819BA0089D222 /* TSDBManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSDBManager.swift; sourceTree = "<group>"; };
+		A868577D2DF81A930089D222 /* TSDBActionInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSDBActionInfoModel.swift; sourceTree = "<group>"; };
+		A86857812DF81ACF0089D222 /* TSActionInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSActionInfoModel.swift; sourceTree = "<group>"; };
+		A86857842DF81B660089D222 /* TSNetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSNetworkManager.swift; sourceTree = "<group>"; };
+		A86857852DF81B660089D222 /* TSNetWork+Business.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSNetWork+Business.swift"; sourceTree = "<group>"; };
+		A86857862DF81B660089D222 /* TSNetworkManager+Loading.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSNetworkManager+Loading.swift"; sourceTree = "<group>"; };
+		A868578A2DF843F90089D222 /* TSRealmManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSRealmManager.swift; sourceTree = "<group>"; };
+		A868578F2DF845F60089D222 /* TSGeneratorloadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGeneratorloadingView.swift; sourceTree = "<group>"; };
+		A86857902DF845F60089D222 /* TSGeneratoringAnimationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGeneratoringAnimationView.swift; sourceTree = "<group>"; };
+		A86857912DF845F60089D222 /* TSGeneratorErrorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGeneratorErrorView.swift; sourceTree = "<group>"; };
+		A86857972DF846FB0089D222 /* TSDynamicBlurView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSDynamicBlurView.swift; sourceTree = "<group>"; };
+		A86857992DF9158C0089D222 /* TSPurchaseEnum.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPurchaseEnum.swift; sourceTree = "<group>"; };
+		A868579D2DF915DD0089D222 /* TSPurchaseBusiness.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPurchaseBusiness.swift; sourceTree = "<group>"; };
+		A86857A02DF91EB80089D222 /* TSAIListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListVC.swift; sourceTree = "<group>"; };
+		A86857A22DF91F680089D222 /* TSAILIstCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAILIstCell.swift; sourceTree = "<group>"; };
+		A86857A62DF9204B0089D222 /* TSPhotoPickerManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPhotoPickerManager.swift; sourceTree = "<group>"; };
+		A86857AA2DF921160089D222 /* TSAIListHintBaseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListHintBaseVC.swift; sourceTree = "<group>"; };
+		A86857AE2DF921970089D222 /* TSAppBtnView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAppBtnView.swift; sourceTree = "<group>"; };
+		A86857B12DF921F90089D222 /* TSView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSView.swift; sourceTree = "<group>"; };
+		A86857B52DF9258D0089D222 /* TSAIUploadPhotoVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIUploadPhotoVC.swift; sourceTree = "<group>"; };
+		A86857B82DF9259C0089D222 /* TSAIList+Enmu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSAIList+Enmu.swift"; sourceTree = "<group>"; };
+		A86857BB2DF9260D0089D222 /* TSAIListHistoryVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListHistoryVC.swift; sourceTree = "<group>"; };
+		A86857BD2DF9261D0089D222 /* TSAIListHistoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListHistoryCell.swift; sourceTree = "<group>"; };
+		A86857BF2DF926870089D222 /* TSPageNullView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPageNullView.swift; sourceTree = "<group>"; };
+		A86857C12DF926EB0089D222 /* TSPhotoSizeHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPhotoSizeHelper.swift; sourceTree = "<group>"; };
+		A86857C32DF92AE30089D222 /* UIFont+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+Ex.swift"; sourceTree = "<group>"; };
+		A86857C52DF92BE70089D222 /* ZillaSlab-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ZillaSlab-Bold.ttf"; sourceTree = "<group>"; };
+		A86857CE2DF977630089D222 /* TSAIListPhotoGeneratorVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListPhotoGeneratorVC.swift; sourceTree = "<group>"; };
+		A86857D02DF9778B0089D222 /* TSAIListPhotoGeneratorVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListPhotoGeneratorVM.swift; sourceTree = "<group>"; };
+		A86857D22DF978730089D222 /* TSProgressState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSProgressState.swift; sourceTree = "<group>"; };
+		A86857D42DF97A2A0089D222 /* TSAIExpandChangeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIExpandChangeView.swift; sourceTree = "<group>"; };
+		A86857D62DF983620089D222 /* generat_loading.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = generat_loading.gif; sourceTree = "<group>"; };
+		A86857D92DF9945F0089D222 /* TSAIPhotoDetailsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIPhotoDetailsVC.swift; sourceTree = "<group>"; };
+		A86857DC2DF99C200089D222 /* TSImageIPanComparisonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSImageIPanComparisonView.swift; sourceTree = "<group>"; };
 		A8C4C0992D24218A003C46FC /* AVAssetExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AVAssetExtension.swift; sourceTree = "<group>"; };
 		A8C4C09A2D24218A003C46FC /* Converter4Image.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Converter4Image.swift; sourceTree = "<group>"; };
 		A8C4C09B2D24218A003C46FC /* Converter4Video.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Converter4Video.swift; sourceTree = "<group>"; };
@@ -403,14 +410,9 @@
 		A8E56BED2D1520EC003C54AF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		A8E56BEE2D1520EC003C54AF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		A8E56BEF2D1520EC003C54AF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		A8F76C3B2D35026100AA6E93 /* TSPurchaseMembershipVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPurchaseMembershipVC.swift; sourceTree = "<group>"; };
 		A8F76C3E2D350A9600AA6E93 /* TSPurchaseManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPurchaseManager.swift; sourceTree = "<group>"; };
-		A8F76C462D3510FA00AA6E93 /* TSNetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSNetworkManager.swift; sourceTree = "<group>"; };
 		A8F76C4C2D3747AB00AA6E93 /* TSPurchaseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPurchaseVC.swift; sourceTree = "<group>"; };
-		A8F774512D3757DF00AA6E93 /* Color+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+Ex.swift"; sourceTree = "<group>"; };
-		A8F774532D37581700AA6E93 /* Font+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+Ex.swift"; sourceTree = "<group>"; };
 		A8F778AD2D1AC12100BF55D5 /* TSRandomWallpaperBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSRandomWallpaperBrowseView.swift; sourceTree = "<group>"; };
-		A8F778AF2D1AC16F00BF55D5 /* TSBaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseView.swift; sourceTree = "<group>"; };
 		A8F778B12D1BA07000BF55D5 /* TSRandomWallpaperBrowseSelectView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSRandomWallpaperBrowseSelectView.swift; sourceTree = "<group>"; };
 		A8F778B32D1BB8F300BF55D5 /* PhotoManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoManager.swift; sourceTree = "<group>"; };
 		A8F778B62D1BE9A100BF55D5 /* TSLiveWallpaperBrowseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSLiveWallpaperBrowseVC.swift; sourceTree = "<group>"; };
@@ -744,33 +746,18 @@
 		A81CA4662D156A8100A3AAC8 /* Common */ = {
 			isa = PBXGroup;
 			children = (
-				A8F76C452D3510E700AA6E93 /* NetworkManager */,
+				A86857C12DF926EB0089D222 /* TSPhotoSizeHelper.swift */,
+				A86857A52DF920400089D222 /* ViewTool */,
+				A86857832DF81B510089D222 /* TSNetWork */,
 				A8F76C402D350A9600AA6E93 /* Purchase */,
-				A878331D2D293E9300E47F2C /* View */,
 				A858EE182D1CF635004B680F /* ThirdParty */,
 				A81CA4882D15840F00A3AAC8 /* Tool */,
 				A81CA4752D15778800A3AAC8 /* Ex */,
 				A81CA46C2D156C6800A3AAC8 /* GlobalImports */,
-				A81CA4672D156A9400A3AAC8 /* BaseClass */,
 			);
 			path = Common;
 			sourceTree = "<group>";
 		};
-		A81CA4672D156A9400A3AAC8 /* BaseClass */ = {
-			isa = PBXGroup;
-			children = (
-				A81F5B382D19037100740085 /* TSBaseModel.swift */,
-				A8F778AF2D1AC16F00BF55D5 /* TSBaseView.swift */,
-				A81CA4AB2D16944B00A3AAC8 /* TSBaseTabViewCell.swift */,
-				A81CA4AC2D16944B00A3AAC8 /* TSBaseCollectionCell.swift */,
-				A81CA4A02D166F3A00A3AAC8 /* TSBasicItemModel.swift */,
-				A81CA4712D1575B800A3AAC8 /* TSBaseNavigationBarView.swift */,
-				A81CA46A2D156BC600A3AAC8 /* TSBaseNavigationC.swift */,
-				A81CA4682D156AAB00A3AAC8 /* TSBaseVC.swift */,
-			);
-			path = BaseClass;
-			sourceTree = "<group>";
-		};
 		A81CA46C2D156C6800A3AAC8 /* GlobalImports */ = {
 			isa = PBXGroup;
 			children = (
@@ -782,27 +769,13 @@
 		A81CA4752D15778800A3AAC8 /* Ex */ = {
 			isa = PBXGroup;
 			children = (
-				A8F774502D3757D300AA6E93 /* SwiftUI */,
-				A8C4C01C2D2397B4003C46FC /* UIViewController+Ex.swift */,
-				A8477C982D2291F100DF0B93 /* UserDefault+Ex.swift */,
+				A86857C32DF92AE30089D222 /* UIFont+Ex.swift */,
 				A81F5B4E2D19673500740085 /* AVAsset+Ex.swift */,
 				A81CA4B72D16A6B600A3AAC8 /* View+Ex.swift */,
-				A81CA4AF2D1694C200A3AAC8 /* Date+Ex.swift */,
-				A81CA4A52D16914C00A3AAC8 /* Dictionary+Ex.swift */,
-				A81F5B4C2D1965EF00740085 /* UIImage+Ex.swift */,
-				A81CA4A72D16918400A3AAC8 /* Array+Ex.swift */,
 				A81CA49E2D1655BE00A3AAC8 /* UICollectionView+Ex.swift */,
 				A81F5B3F2D194EA900740085 /* UIDevice+Extension.swift */,
-				A81CA49C2D1654A500A3AAC8 /* UITableView+Ex.swift */,
-				A81CA4802D157B0A00A3AAC8 /* UIFont+Ex.swift */,
-				A81CA4762D15779400A3AAC8 /* UIColor+Ex.swift */,
-				A81CA4782D1577E100A3AAC8 /* NSString+Ex.swift */,
-				60553FDE2D3B850C00BAAD7F /* TimeInterval+Ext.swift */,
-				A81CA47A2D15784400A3AAC8 /* Int+Ex.swift */,
 				A81CA4822D157F5200A3AAC8 /* UIImageView+Ex.swift */,
 				A81CA4842D15829E00A3AAC8 /* UIButton+Ex.swift */,
-				A81CA4862D15830E00A3AAC8 /* UILabel+Ex.swift */,
-				A81F5B532D1969D500740085 /* CGFloat+Ex.swift */,
 				A81F5B482D1956E600740085 /* UIScreen.swift */,
 				60553FDC2D3B84E700BAAD7F /* UIScrollView+Ext.swift */,
 			);
@@ -834,8 +807,6 @@
 				A8C4C0EE2D27BFEA003C46FC /* TSNetworkTool.swift */,
 				A84C239E2D1E88C500B61B55 /* TSFileManagerTool.swift */,
 				A81F5B4A2D19658300740085 /* PhotoTools.swift */,
-				A81CA4B52D169F1A00A3AAC8 /* WindowHelper.swift */,
-				A81CA4B32D169C2600A3AAC8 /* TSToastTool.swift */,
 				A81CA4892D15841600A3AAC8 /* TSCommonTool */,
 			);
 			path = Tool;
@@ -852,6 +823,9 @@
 		A81CA48C2D15855300A3AAC8 /* Business */ = {
 			isa = PBXGroup;
 			children = (
+				A86857AD2DF9218C0089D222 /* General */,
+				A86857A92DF9210D0089D222 /* TSAIListVC */,
+				A868578D2DF845D00089D222 /* BusinessView */,
 				60553F022D3B4DF800BAAD7F /* TSMusic */,
 				A8F76C3A2D35022300AA6E93 /* TSPurchaseMembershipVC */,
 				A8477C952D2272FB00DF0B93 /* TSBusinessWebVC */,
@@ -926,6 +900,7 @@
 		A81CA4B12D1695F300A3AAC8 /* Resource */ = {
 			isa = PBXGroup;
 			children = (
+				A86857D62DF983620089D222 /* generat_loading.gif */,
 				606372D62D545E55005C82CF /* Example */,
 				A81F5B502D19684D00740085 /* Json */,
 				A81CA4B22D1695F800A3AAC8 /* Font */,
@@ -936,21 +911,11 @@
 		A81CA4B22D1695F800A3AAC8 /* Font */ = {
 			isa = PBXGroup;
 			children = (
+				A86857C52DF92BE70089D222 /* ZillaSlab-Bold.ttf */,
 			);
 			path = Font;
 			sourceTree = "<group>";
 		};
-		A81F5B312D18FA2E00740085 /* UICollectionView+Component */ = {
-			isa = PBXGroup;
-			children = (
-				A81F5B2A2D18F9C600740085 /* UICollectionView+More.swift */,
-				A81F5B2E2D18FA2E00740085 /* CollectionViewComponent.swift */,
-				A81F5B2F2D18FA2E00740085 /* Component.swift */,
-				A81F5B302D18FA2E00740085 /* CommonSectionComponent.swift */,
-			);
-			path = "UICollectionView+Component";
-			sourceTree = "<group>";
-		};
 		A81F5B3A2D19085F00740085 /* TSRandomWallpaperView */ = {
 			isa = PBXGroup;
 			children = (
@@ -1073,21 +1038,170 @@
 			path = ThirdParty;
 			sourceTree = "<group>";
 		};
-		A878331D2D293E9300E47F2C /* View */ = {
+		A868577A2DF819AA0089D222 /* TSDBManager */ = {
 			isa = PBXGroup;
 			children = (
-				A878331E2D293EB700E47F2C /* UITableView+TSItemModel */,
-				A81F5B312D18FA2E00740085 /* UICollectionView+Component */,
+				A868577B2DF819BA0089D222 /* TSDBManager.swift */,
+				A868577D2DF81A930089D222 /* TSDBActionInfoModel.swift */,
 			);
-			path = View;
+			path = TSDBManager;
+			sourceTree = "<group>";
+		};
+		A868577F2DF81AB90089D222 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				A86857812DF81ACF0089D222 /* TSActionInfoModel.swift */,
+				A86857D22DF978730089D222 /* TSProgressState.swift */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		A86857802DF81AC20089D222 /* Data */ = {
+			isa = PBXGroup;
+			children = (
+				A868578B2DF843F90089D222 /* TSRealmManager */,
+				A868577F2DF81AB90089D222 /* Model */,
+				A868577A2DF819AA0089D222 /* TSDBManager */,
+			);
+			path = Data;
+			sourceTree = "<group>";
+		};
+		A86857832DF81B510089D222 /* TSNetWork */ = {
+			isa = PBXGroup;
+			children = (
+				A86857842DF81B660089D222 /* TSNetworkManager.swift */,
+				A86857852DF81B660089D222 /* TSNetWork+Business.swift */,
+				A86857862DF81B660089D222 /* TSNetworkManager+Loading.swift */,
+			);
+			path = TSNetWork;
+			sourceTree = "<group>";
+		};
+		A868578B2DF843F90089D222 /* TSRealmManager */ = {
+			isa = PBXGroup;
+			children = (
+				A868578A2DF843F90089D222 /* TSRealmManager.swift */,
+			);
+			path = TSRealmManager;
+			sourceTree = "<group>";
+		};
+		A868578D2DF845D00089D222 /* BusinessView */ = {
+			isa = PBXGroup;
+			children = (
+				A86857BF2DF926870089D222 /* TSPageNullView.swift */,
+				A86857AE2DF921970089D222 /* TSAppBtnView.swift */,
+				A86857B12DF921F90089D222 /* TSView.swift */,
+				A86857972DF846FB0089D222 /* TSDynamicBlurView.swift */,
+				A868578E2DF845E40089D222 /* TSGeneratorloadingView */,
+			);
+			path = BusinessView;
+			sourceTree = "<group>";
+		};
+		A868578E2DF845E40089D222 /* TSGeneratorloadingView */ = {
+			isa = PBXGroup;
+			children = (
+				A868578F2DF845F60089D222 /* TSGeneratorloadingView.swift */,
+				A86857902DF845F60089D222 /* TSGeneratoringAnimationView.swift */,
+				A86857912DF845F60089D222 /* TSGeneratorErrorView.swift */,
+			);
+			path = TSGeneratorloadingView;
+			sourceTree = "<group>";
+		};
+		A868579F2DF91EA10089D222 /* TSAIListVC */ = {
+			isa = PBXGroup;
+			children = (
+				A86857A02DF91EB80089D222 /* TSAIListVC.swift */,
+				A86857A22DF91F680089D222 /* TSAILIstCell.swift */,
+			);
+			path = TSAIListVC;
+			sourceTree = "<group>";
+		};
+		A86857A52DF920400089D222 /* ViewTool */ = {
+			isa = PBXGroup;
+			children = (
+				A86857A72DF9204B0089D222 /* TSPhotoPickerManager */,
+			);
+			path = ViewTool;
 			sourceTree = "<group>";
 		};
-		A878331E2D293EB700E47F2C /* UITableView+TSItemModel */ = {
+		A86857A72DF9204B0089D222 /* TSPhotoPickerManager */ = {
 			isa = PBXGroup;
 			children = (
-				A878331F2D293ED300E47F2C /* TSSimpleTableView.swift */,
+				A86857A62DF9204B0089D222 /* TSPhotoPickerManager.swift */,
 			);
-			path = "UITableView+TSItemModel";
+			path = TSPhotoPickerManager;
+			sourceTree = "<group>";
+		};
+		A86857A92DF9210D0089D222 /* TSAIListVC */ = {
+			isa = PBXGroup;
+			children = (
+				A86857D82DF9943E0089D222 /* TSAIPhotoDetailsVC */,
+				A86857D42DF97A2A0089D222 /* TSAIExpandChangeView.swift */,
+				A86857CD2DF9775D0089D222 /* TSAIPhotoGeneratorVC */,
+				A86857BA2DF926070089D222 /* TSAIListHistoryVC */,
+				A86857B82DF9259C0089D222 /* TSAIList+Enmu.swift */,
+				A86857B62DF9258D0089D222 /* TSAIUploadPhotoVC */,
+				A86857AB2DF921160089D222 /* TSAIAgeImageHintVC */,
+				A868579F2DF91EA10089D222 /* TSAIListVC */,
+			);
+			path = TSAIListVC;
+			sourceTree = "<group>";
+		};
+		A86857AB2DF921160089D222 /* TSAIAgeImageHintVC */ = {
+			isa = PBXGroup;
+			children = (
+				A86857AA2DF921160089D222 /* TSAIListHintBaseVC.swift */,
+			);
+			path = TSAIAgeImageHintVC;
+			sourceTree = "<group>";
+		};
+		A86857AD2DF9218C0089D222 /* General */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = General;
+			sourceTree = "<group>";
+		};
+		A86857B62DF9258D0089D222 /* TSAIUploadPhotoVC */ = {
+			isa = PBXGroup;
+			children = (
+				A86857B52DF9258D0089D222 /* TSAIUploadPhotoVC.swift */,
+			);
+			path = TSAIUploadPhotoVC;
+			sourceTree = "<group>";
+		};
+		A86857BA2DF926070089D222 /* TSAIListHistoryVC */ = {
+			isa = PBXGroup;
+			children = (
+				A86857BB2DF9260D0089D222 /* TSAIListHistoryVC.swift */,
+				A86857BD2DF9261D0089D222 /* TSAIListHistoryCell.swift */,
+			);
+			path = TSAIListHistoryVC;
+			sourceTree = "<group>";
+		};
+		A86857CD2DF9775D0089D222 /* TSAIPhotoGeneratorVC */ = {
+			isa = PBXGroup;
+			children = (
+				A86857CE2DF977630089D222 /* TSAIListPhotoGeneratorVC.swift */,
+				A86857D02DF9778B0089D222 /* TSAIListPhotoGeneratorVM.swift */,
+			);
+			path = TSAIPhotoGeneratorVC;
+			sourceTree = "<group>";
+		};
+		A86857D82DF9943E0089D222 /* TSAIPhotoDetailsVC */ = {
+			isa = PBXGroup;
+			children = (
+				A86857DB2DF99C170089D222 /* View */,
+				A86857D92DF9945F0089D222 /* TSAIPhotoDetailsVC.swift */,
+			);
+			path = TSAIPhotoDetailsVC;
+			sourceTree = "<group>";
+		};
+		A86857DB2DF99C170089D222 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				A86857DC2DF99C200089D222 /* TSImageIPanComparisonView.swift */,
+			);
+			path = View;
 			sourceTree = "<group>";
 		};
 		A8C4C0A12D24218A003C46FC /* Util */ = {
@@ -1126,6 +1240,7 @@
 		A8E56BF52D1520EC003C54AF /* TSLiveWallpaper */ = {
 			isa = PBXGroup;
 			children = (
+				A86857802DF81AC20089D222 /* Data */,
 				A81CA4B12D1695F300A3AAC8 /* Resource */,
 				A81CA48C2D15855300A3AAC8 /* Business */,
 				A81CA47C2D15787D00A3AAC8 /* DataManger */,
@@ -1144,7 +1259,6 @@
 			isa = PBXGroup;
 			children = (
 				A8F76C4C2D3747AB00AA6E93 /* TSPurchaseVC.swift */,
-				A8F76C3B2D35026100AA6E93 /* TSPurchaseMembershipVC.swift */,
 				A81CA4A22D16747900A3AAC8 /* TSViewTool */,
 			);
 			path = TSPurchaseMembershipVC;
@@ -1153,28 +1267,13 @@
 		A8F76C402D350A9600AA6E93 /* Purchase */ = {
 			isa = PBXGroup;
 			children = (
+				A86857992DF9158C0089D222 /* TSPurchaseEnum.swift */,
 				A8F76C3E2D350A9600AA6E93 /* TSPurchaseManager.swift */,
+				A868579D2DF915DD0089D222 /* TSPurchaseBusiness.swift */,
 			);
 			path = Purchase;
 			sourceTree = "<group>";
 		};
-		A8F76C452D3510E700AA6E93 /* NetworkManager */ = {
-			isa = PBXGroup;
-			children = (
-				A8F76C462D3510FA00AA6E93 /* TSNetworkManager.swift */,
-			);
-			path = NetworkManager;
-			sourceTree = "<group>";
-		};
-		A8F774502D3757D300AA6E93 /* SwiftUI */ = {
-			isa = PBXGroup;
-			children = (
-				A8F774512D3757DF00AA6E93 /* Color+Ex.swift */,
-				A8F774532D37581700AA6E93 /* Font+Ex.swift */,
-			);
-			path = SwiftUI;
-			sourceTree = "<group>";
-		};
 		A8F778B52D1BE98D00BF55D5 /* TSLiveWallpaperBrowseVC */ = {
 			isa = PBXGroup;
 			children = (
@@ -1261,6 +1360,8 @@
 				603901222DF9770A0096551E /* Flash-old-Time.png in Resources */,
 				606372D82D545E6C005C82CF /* Example Music.mp3 in Resources */,
 				A8C4C0A42D24218A003C46FC /* metadata.mov in Resources */,
+				A86857D72DF983620089D222 /* generat_loading.gif in Resources */,
+				A86857C62DF92BE70089D222 /* ZillaSlab-Bold.ttf in Resources */,
 				60553FC42D3B528A00BAAD7F /* IJKPlayer.md in Resources */,
 				609B6EA52D6F1221007942D4 /* Localizable.strings in Resources */,
 				A8E56BF92D1520EC003C54AF /* Assets.xcassets in Resources */,
@@ -1318,41 +1419,27 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				A81CA49D2D1654B600A3AAC8 /* UITableView+Ex.swift in Sources */,
 				60553FDB2D3B7CC600BAAD7F /* FitManager.swift in Sources */,
-				A81CA4692D156AB600A3AAC8 /* TSBaseVC.swift in Sources */,
 				A81CA4992D1652C400A3AAC8 /* TSMineVC.swift in Sources */,
-				A8477C992D2291F800DF0B93 /* UserDefault+Ex.swift in Sources */,
 				A8C4C0EF2D27BFF7003C46FC /* TSNetworkTool.swift in Sources */,
-				A8F76C3C2D35026200AA6E93 /* TSPurchaseMembershipVC.swift in Sources */,
 				A81CA46E2D156C7000A3AAC8 /* GlobalImports.swift in Sources */,
-				A87833202D293EEC00E47F2C /* TSSimpleTableView.swift in Sources */,
 				606372E52D55BAB8005C82CF /* GuideBubbleView.swift in Sources */,
-				A8F774522D3757E700AA6E93 /* Color+Ex.swift in Sources */,
-				A81F5B4D2D1965F800740085 /* UIImage+Ex.swift in Sources */,
 				A81CA4832D157F5C00A3AAC8 /* UIImageView+Ex.swift in Sources */,
 				60F82C112D43298800FFB08D /* MusicContainerViewModel.swift in Sources */,
-				A81F5B322D18FA2E00740085 /* Component.swift in Sources */,
-				A81F5B332D18FA2E00740085 /* CommonSectionComponent.swift in Sources */,
 				A81F5B492D1956EA00740085 /* UIScreen.swift in Sources */,
 				A8C4C0E62D268D02003C46FC /* LivePhotoCreater.swift in Sources */,
 				A8C4C0E72D268D02003C46FC /* VideoRecorder.swift in Sources */,
-				A81F5B342D18FA2E00740085 /* CollectionViewComponent.swift in Sources */,
 				A8F76C4D2D3747B400AA6E93 /* TSPurchaseVC.swift in Sources */,
-				A81CA4722D1575B900A3AAC8 /* TSBaseNavigationBarView.swift in Sources */,
 				A81F5B5B2D1A5F2300740085 /* TSHomeTopBannerCell.swift in Sources */,
 				A83946312D1D66A000ABFF0D /* TSTermsServiceVC.swift in Sources */,
 				A8C4C0982D242154003C46FC /* LivePhoto.swift in Sources */,
 				A81F5B472D19562800740085 /* EditorVideoControlMaskView.swift in Sources */,
-				A81F5B392D19037800740085 /* TSBaseModel.swift in Sources */,
-				A81CA4A62D16915F00A3AAC8 /* Dictionary+Ex.swift in Sources */,
 				606372DA2D545F0D005C82CF /* ExampleIniter.swift in Sources */,
 				A81CA4AA2D16943800A3AAC8 /* TSMineCell.swift in Sources */,
 				A83946212D1D61D600ABFF0D /* TSRateUsVC.swift in Sources */,
 				A81F5B4F2D19674600740085 /* AVAsset+Ex.swift in Sources */,
 				A8E56BF62D1520EC003C54AF /* AppDelegate.swift in Sources */,
 				A8F778B42D1BB8F600BF55D5 /* PhotoManager.swift in Sources */,
-				A81CA4872D15832900A3AAC8 /* UILabel+Ex.swift in Sources */,
 				60553FD02D3B54A400BAAD7F /* LWNavigationBar.swift in Sources */,
 				60553FD22D3B54A400BAAD7F /* GradientButton.swift in Sources */,
 				60553FD42D3B54A400BAAD7F /* LWBaseViewController.swift in Sources */,
@@ -1360,19 +1447,17 @@
 				60553FD72D3B54A400BAAD7F /* GradientText.swift in Sources */,
 				60553FD82D3B54A400BAAD7F /* LWBaseNavigationController.swift in Sources */,
 				60553FD92D3B54A400BAAD7F /* GradientBackgroundModifier.swift in Sources */,
+				A868579E2DF915E90089D222 /* TSPurchaseBusiness.swift in Sources */,
 				A81F5B5D2D1A906C00740085 /* TSHomeDataModel.swift in Sources */,
-				A8F778B02D1AC17500BF55D5 /* TSBaseView.swift in Sources */,
 				A81CA49B2D1652CA00A3AAC8 /* TSHomeVC.swift in Sources */,
+				A86857B02DF921970089D222 /* TSAppBtnView.swift in Sources */,
 				A81CA4B82D16A6BD00A3AAC8 /* View+Ex.swift in Sources */,
 				A8F76C422D350A9600AA6E93 /* TSPurchaseManager.swift in Sources */,
 				60553FDD2D3B84E700BAAD7F /* UIScrollView+Ext.swift in Sources */,
-				A81CA4792D1577E800A3AAC8 /* NSString+Ex.swift in Sources */,
 				A81CA4852D1582A600A3AAC8 /* UIButton+Ex.swift in Sources */,
 				606372E72D5705F4005C82CF /* MusicPlaylistContainerViewController.swift in Sources */,
-				A81CA46B2D156BDC00A3AAC8 /* TSBaseNavigationC.swift in Sources */,
 				A81CA47F2D15789C00A3AAC8 /* TSConfig.swift in Sources */,
 				A81CA49F2D1655CE00A3AAC8 /* UICollectionView+Ex.swift in Sources */,
-				A81F5B2B2D18F9C600740085 /* UICollectionView+More.swift in Sources */,
 				A81CA4BA2D16B6E300A3AAC8 /* TSHomeCell.swift in Sources */,
 				A8F778B22D1BA07200BF55D5 /* TSRandomWallpaperBrowseSelectView.swift in Sources */,
 				A8477C9F2D22ABDA00DF0B93 /* TSEditLiveEidtCell.swift in Sources */,
@@ -1381,10 +1466,7 @@
 				A8F778AE2D1AC12400BF55D5 /* TSRandomWallpaperBrowseView.swift in Sources */,
 				A81F5B4B2D19658300740085 /* PhotoTools.swift in Sources */,
 				A83946272D1D623800ABFF0D /* TSShareUsVC.swift in Sources */,
-				A8C4C01D2D2397B9003C46FC /* UIViewController+Ex.swift in Sources */,
-				A81F5B542D1969E000740085 /* CGFloat+Ex.swift in Sources */,
 				A81CA48B2D15843700A3AAC8 /* TSCommonTool.swift in Sources */,
-				A81CA4AD2D16944B00A3AAC8 /* TSBaseTabViewCell.swift in Sources */,
 				A84C239A2D1E3A4300B61B55 /* GPVideoPlayerView.swift in Sources */,
 				60553F722D3B528A00BAAD7F /* PlayDetailListViewContoller.swift in Sources */,
 				60553F742D3B528A00BAAD7F /* Consts.swift in Sources */,
@@ -1398,21 +1480,31 @@
 				60553F7C2D3B528A00BAAD7F /* AddPlayListViewController.swift in Sources */,
 				60553F7D2D3B528A00BAAD7F /* PlayDetailTopView.swift in Sources */,
 				60553F7E2D3B528A00BAAD7F /* CWOperateViewController+Ext.swift in Sources */,
+				A868577E2DF81A940089D222 /* TSDBActionInfoModel.swift in Sources */,
+				A86857B72DF9258D0089D222 /* TSAIUploadPhotoVC.swift in Sources */,
 				60553F7F2D3B528A00BAAD7F /* OperateTopView.swift in Sources */,
+				A86857822DF81AD40089D222 /* TSActionInfoModel.swift in Sources */,
 				60553F802D3B528A00BAAD7F /* PlayDetailViewController+Ext.swift in Sources */,
+				A86857B22DF921F90089D222 /* TSView.swift in Sources */,
 				60553F812D3B528A00BAAD7F /* SJIJKMediaPlayer.m in Sources */,
 				60553F832D3B528A00BAAD7F /* THUD+CW.swift in Sources */,
 				60553F842D3B528A00BAAD7F /* SongListManageViewModel.swift in Sources */,
 				60553F852D3B528A00BAAD7F /* SongDownloadCellViewModel.swift in Sources */,
 				60553F862D3B528A00BAAD7F /* PlayDetailControlView.swift in Sources */,
+				A86857872DF81B660089D222 /* TSNetWork+Business.swift in Sources */,
+				A86857882DF81B660089D222 /* TSNetworkManager.swift in Sources */,
+				A86857892DF81B660089D222 /* TSNetworkManager+Loading.swift in Sources */,
 				60553F872D3B528A00BAAD7F /* PlayDetailListViewModel.swift in Sources */,
+				A86857A32DF91F690089D222 /* TSAILIstCell.swift in Sources */,
 				60553F892D3B528A00BAAD7F /* CWOperateViewController.swift in Sources */,
 				60553F8A2D3B528A00BAAD7F /* THUDProtocol.swift in Sources */,
 				60553F8B2D3B528A00BAAD7F /* THUD.swift in Sources */,
+				A868577C2DF819BB0089D222 /* TSDBManager.swift in Sources */,
 				60553F8C2D3B528A00BAAD7F /* PlayDetailViewController.swift in Sources */,
 				60553F8D2D3B528A00BAAD7F /* CWCustomProgressView.swift in Sources */,
 				60553F8E2D3B528A00BAAD7F /* PlaylistDetailViewController.swift in Sources */,
 				60553F8F2D3B528A00BAAD7F /* SleepTimeViewController.swift in Sources */,
+				A86857BE2DF926220089D222 /* TSAIListHistoryCell.swift in Sources */,
 				60553F902D3B528A00BAAD7F /* CWLoadingView.swift in Sources */,
 				60553F912D3B528A00BAAD7F /* PlayListDetaiViewModel.swift in Sources */,
 				60553F922D3B528A00BAAD7F /* SJIJKMediaPlayerLayerView.m in Sources */,
@@ -1427,9 +1519,12 @@
 				60553F9B2D3B528A00BAAD7F /* LWSearchBar.swift in Sources */,
 				60553F9C2D3B528A00BAAD7F /* BubbleMenuView.swift in Sources */,
 				60553F9D2D3B528A00BAAD7F /* SongListViewModel.swift in Sources */,
+				A86857DD2DF99C200089D222 /* TSImageIPanComparisonView.swift in Sources */,
 				60553F9F2D3B528A00BAAD7F /* FilterBarView.swift in Sources */,
 				60553FA02D3B528A00BAAD7F /* SongListViewController+Target.swift in Sources */,
 				60553FA12D3B528A00BAAD7F /* ToastView.swift in Sources */,
+				A86857D32DF978740089D222 /* TSProgressState.swift in Sources */,
+				A868579A2DF915950089D222 /* TSPurchaseEnum.swift in Sources */,
 				60553FA22D3B528A00BAAD7F /* SongListViewController.swift in Sources */,
 				60553FA32D3B528A00BAAD7F /* PlayListTopItemView.swift in Sources */,
 				60553FA42D3B528A00BAAD7F /* VipTagView.swift in Sources */,
@@ -1440,13 +1535,21 @@
 				60553FA92D3B528A00BAAD7F /* CustomTextField.swift in Sources */,
 				60553FAA2D3B528A00BAAD7F /* CWOperateButton.swift in Sources */,
 				60553FAB2D3B528A00BAAD7F /* PlayListViewModel.swift in Sources */,
+				A86857B92DF925A20089D222 /* TSAIList+Enmu.swift in Sources */,
 				60553FAC2D3B528A00BAAD7F /* TagListView.swift in Sources */,
 				60553FAD2D3B528A00BAAD7F /* ImageTextControl.swift in Sources */,
 				60553FAE2D3B528A00BAAD7F /* CWProgressView.swift in Sources */,
 				60553FAF2D3B528A00BAAD7F /* TipsView.swift in Sources */,
+				A86857DA2DF994600089D222 /* TSAIPhotoDetailsVC.swift in Sources */,
 				60553FB02D3B528A00BAAD7F /* PlayMiniBar.swift in Sources */,
+				A86857CF2DF977640089D222 /* TSAIListPhotoGeneratorVC.swift in Sources */,
 				60553FB12D3B528A00BAAD7F /* SongDownloadCell.swift in Sources */,
 				60553FB22D3B528A00BAAD7F /* LocalSearchViewModel.swift in Sources */,
+				A86857922DF845F60089D222 /* TSGeneratoringAnimationView.swift in Sources */,
+				A86857BC2DF926110089D222 /* TSAIListHistoryVC.swift in Sources */,
+				A86857932DF845F60089D222 /* TSGeneratorErrorView.swift in Sources */,
+				A86857C02DF926870089D222 /* TSPageNullView.swift in Sources */,
+				A86857942DF845F60089D222 /* TSGeneratorloadingView.swift in Sources */,
 				60553FB32D3B528A00BAAD7F /* SortMenuViewController.swift in Sources */,
 				60553FB42D3B528A00BAAD7F /* ImportFilesManager.swift in Sources */,
 				60553FB52D3B528A00BAAD7F /* PlayButtonView.swift in Sources */,
@@ -1457,46 +1560,43 @@
 				60553FBA2D3B528A00BAAD7F /* NotifactionKey.swift in Sources */,
 				60553FBB2D3B528A00BAAD7F /* PlayListAddCell.swift in Sources */,
 				60553FBD2D3B528A00BAAD7F /* SpacedButton.swift in Sources */,
+				A868578C2DF843F90089D222 /* TSRealmManager.swift in Sources */,
 				60553FBE2D3B528A00BAAD7F /* BasePresentViewController.swift in Sources */,
-				60553FDF2D3B850C00BAAD7F /* TimeInterval+Ext.swift in Sources */,
 				60553FBF2D3B528A00BAAD7F /* PlayListCell.swift in Sources */,
 				60553FC12D3B528A00BAAD7F /* MusicSearchBar.swift in Sources */,
 				60553FC22D3B528A00BAAD7F /* PlayerManager.swift in Sources */,
 				60553FC32D3B528A00BAAD7F /* LocalSearchViewController.swift in Sources */,
-				A8F76C472D3510FE00AA6E93 /* TSNetworkManager.swift in Sources */,
 				A84C239B2D1E3A4300B61B55 /* GPVideoClipperController.swift in Sources */,
 				60553FE32D3DF12200BAAD7F /* CustomSegementItem.swift in Sources */,
 				A84C239C2D1E3A4300B61B55 /* GPVideoClipperView.swift in Sources */,
 				A84C239D2D1E3A4300B61B55 /* GPVideoConfigMaker.swift in Sources */,
 				A839463C2D1D6E3600ABFF0D /* TSRandomWallpaperCopyrightVC.swift in Sources */,
-				A81CA4AE2D16944B00A3AAC8 /* TSBaseCollectionCell.swift in Sources */,
-				A81CA4772D15779E00A3AAC8 /* UIColor+Ex.swift in Sources */,
 				A81CA4952D1652B500A3AAC8 /* TSEditLiveVC.swift in Sources */,
+				A86857D12DF977980089D222 /* TSAIListPhotoGeneratorVM.swift in Sources */,
+				A86857982DF846FE0089D222 /* TSDynamicBlurView.swift in Sources */,
 				A83946332D1D66A900ABFF0D /* TSPrivacyPolicyVC.swift in Sources */,
-				A81CA47B2D15784800A3AAC8 /* Int+Ex.swift in Sources */,
+				A86857C22DF926ED0089D222 /* TSPhotoSizeHelper.swift in Sources */,
 				A839463A2D1D6E3000ABFF0D /* TSRandomWallpaperTutorialsVC.swift in Sources */,
 				A84C239F2D1E88CD00B61B55 /* TSFileManagerTool.swift in Sources */,
+				A86857D52DF97A2A0089D222 /* TSAIExpandChangeView.swift in Sources */,
 				A81F5B562D1982BF00740085 /* TSImageDataCenter.swift in Sources */,
+				A86857A82DF9204B0089D222 /* TSPhotoPickerManager.swift in Sources */,
 				A839462F2D1D64BF00ABFF0D /* TSAboutUsVC.swift in Sources */,
-				A81CA4812D157B1300A3AAC8 /* UIFont+Ex.swift in Sources */,
 				A8477C972D22737900DF0B93 /* TSBusinessWebVC.swift in Sources */,
-				A81CA4B62D169F2400A3AAC8 /* WindowHelper.swift in Sources */,
 				A81CA4972D1652BD00A3AAC8 /* TSRandomWallpaperVC.swift in Sources */,
-				A81CA4A82D16918900A3AAC8 /* Array+Ex.swift in Sources */,
 				A81F5B622D1AB17E00740085 /* TSRandomWallpaperBrowseVC.swift in Sources */,
 				A839463F2D1D6FB700ABFF0D /* TSLiveWallpaperTutorialsVC.swift in Sources */,
-				A81CA4A12D166F3C00A3AAC8 /* TSBasicItemModel.swift in Sources */,
-				A81CA4B42D169C2E00A3AAC8 /* TSToastTool.swift in Sources */,
+				A86857C42DF92AEB0089D222 /* UIFont+Ex.swift in Sources */,
+				A86857A12DF91EB90089D222 /* TSAIListVC.swift in Sources */,
 				A81F5B5F2D1A909300740085 /* TSRandomWallpaperModel.swift in Sources */,
 				A8F778B72D1BE9A500BF55D5 /* TSLiveWallpaperBrowseVC.swift in Sources */,
 				A81CA48F2D15857B00A3AAC8 /* TSTabBarController.swift in Sources */,
-				A81CA4B02D1694C900A3AAC8 /* Date+Ex.swift in Sources */,
 				A8C4C0A52D24218A003C46FC /* Converter4Video.swift in Sources */,
 				A8C4C0A62D24218A003C46FC /* AVAssetExtension.swift in Sources */,
 				A8C4C0A72D24218A003C46FC /* LivePhotoUtil.m in Sources */,
+				A86857AC2DF921160089D222 /* TSAIListHintBaseVC.swift in Sources */,
 				A8C4C0A82D24218A003C46FC /* Converter4Image.swift in Sources */,
 				A83946432D1D701500ABFF0D /* TSLiveWallpaperCopyrightVC.swift in Sources */,
-				A8F774542D37581F00AA6E93 /* Font+Ex.swift in Sources */,
 				A8C4C0AB2D2427E7003C46FC /* LivePhotoConverter.swift in Sources */,
 				A81F5B3C2D19087100740085 /* TSRandomWallpaperCell.swift in Sources */,
 				A81F5B442D19559C00740085 /* EditorVideoControlViewCell.swift in Sources */,
@@ -1544,7 +1644,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 4;
+				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_APP_SANDBOX = NO;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
@@ -1561,7 +1661,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 3.3;
+				MARKETING_VERSION = 3.4;
 				PRODUCT_BUNDLE_IDENTIFIER = musicplayer.offline.com;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
@@ -1584,7 +1684,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 4;
+				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_APP_SANDBOX = NO;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
@@ -1601,7 +1701,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 3.3;
+				MARKETING_VERSION = 3.4;
 				PRODUCT_BUNDLE_IDENTIFIER = musicplayer.offline.com;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";

+ 6 - 1
TSLiveWallpaper/AppDelegate.swift

@@ -15,10 +15,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
 
     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
         window = UIWindow(frame: UIScreen.main.bounds)
-        window?.backgroundColor = UIColor.white
+        window?.backgroundColor = UIColor.black
         window?.makeKeyAndVisible()
         goToLoadVC()
         initBaseDatas()
+        initPlatform()
         downloadNotifaction()
         return true
     }
@@ -77,4 +78,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
 }
 
 extension AppDelegate {
+    func initPlatform() {
+        dePrint("TSRMShared.aiListDB.listModels.count=\(TSRMShared.aiListDB.listModels.count)")
+        TSColorConfigShared.naviMianTextColor = .white
+    }
 }

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

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

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

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

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


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


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

@@ -0,0 +1,22 @@
+{
+  "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


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

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

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


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


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

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

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


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


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

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

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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_1.imageset/Contents.json

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

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


+ 21 - 0
TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_1png.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/AIList/example/ailist_example_image_old_1png.imageset/ailist_example_image_old_1@2xpng.png


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


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

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

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


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


+ 6 - 0
TSLiveWallpaper/Assets.xcassets/Hint/Contents.json

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

+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_bad.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_bad.imageset/hint_Colorize_bad@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_bad.imageset/hint_Colorize_bad@3x.png


+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_good.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_good.imageset/hint_Colorize_good 3@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Colorize_good.imageset/hint_Colorize_good@3x.png


+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_bad.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_bad.imageset/hint_Descratch_bad@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_bad.imageset/hint_Descratch_bad@3x.png


+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_good.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_good.imageset/hint_Descratch_good@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Descratch_good.imageset/hint_Descratch_good@3x.png


+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_bad.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_bad.imageset/hint_Enhance_bad@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_bad.imageset/hint_Enhance_bad@3x.png


+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_good.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_good.imageset/hint_Enhance_good@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_Enhance_good.imageset/hint_Enhance_good@3x.png


+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Hint/hint_image.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_image.imageset/hint_image@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Hint/hint_image.imageset/hint_image@3x.png


+ 22 - 0
TSLiveWallpaper/Assets.xcassets/Tabbar/tabbar_select_ailist.imageset/Contents.json

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

BIN
TSLiveWallpaper/Assets.xcassets/Tabbar/tabbar_select_ailist.imageset/tabbar_select_ailist@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/Tabbar/tabbar_select_ailist.imageset/tabbar_select_ailist@3x.png


+ 206 - 0
TSLiveWallpaper/Business/BusinessView/TSAppBtnView.swift

@@ -0,0 +1,206 @@
+//
+//  TSAppBtnView.swift
+//  AIEmoji
+//
+//  Created by 100Years on 2025/4/23.
+//
+
+
+class TSAppBtn: UIButton {
+ 
+}
+
+class TSNormalSubmitBtn: TSAppBtn {
+//    override var isEnabled: Bool {
+//       didSet {
+//           // 根据 isEnabled 的值设置 alpha
+//           self.alpha = isEnabled ? 1.0 : 0.6
+//       }
+//    }
+}
+
+class TSNormalCancelBtn: TSAppBtn {
+
+}
+
+class TSAppBtnView: TSBaseView {
+    enum ViewStyle {
+        case generate   //创造类的按钮
+    }
+    
+    var viewH:CGFloat = 64
+    var style:ViewStyle = .generate
+    var vipFreeNumType:VipFreeNumType = .none{
+        didSet{
+            updateVipView()
+        }
+    }
+    var clickBlock:(()->Void)?
+    var btnFrame:CGRect?
+    var isIconVipBlock:(()->Bool)? //vip 图片显示
+    var isClickVipBlock:(()->Bool)?  //点击是,是否需要弹出 vip
+    
+    
+    
+    var loading:Bool = false{
+        willSet {
+            if loading != newValue {
+                loadingAnimation(loading: newValue)
+                
+                if loading == false {
+                    self.resetBtnText()
+                }
+            }
+        }
+    }
+    //###################################### Button ######################################
+    var button:UIButton = UIButton()
+    var title:String = ""
+    override func creatUI() {
+
+    }
+    
+    override func dealThings(){
+        
+    }
+
+    func setUpButton(style:ViewStyle,vipFreeNumType:VipFreeNumType = .none,btnFrame:CGRect? = nil,clickBlock: @escaping () -> Void) {
+        self.btnFrame = btnFrame
+        self.style = style
+        self.vipFreeNumType = vipFreeNumType
+        self.clickBlock = clickBlock
+        
+        contentView.removeAllSubViews()
+        
+        switch style {
+        case .generate:
+            title = "Generate".localized
+            setUpGenerate()
+            launchVipLogic()
+        }
+        
+    }
+    
+    
+    func setLoadingText(text:String?){
+        if loading {
+            button.setTitle(text, for: .normal)
+        }else{
+            resetBtnText()
+        }
+    }
+    
+    func resetBtnText(){
+        button.setTitle(title, for: .normal)
+    }
+}
+
+extension TSAppBtnView{
+    
+    func launchVipLogic(){
+        //监听 Vip 变化
+        NotificationCenter.default.addObserver(forName: .kPurchaseDidChanged, object: nil, queue: OperationQueue.main) { [weak self] notification in
+            guard let self = self else { return }
+            updateVipView()
+        }
+        
+        NotificationCenter.default.addObserver(forName: .kVipFreeNumChanged, object: nil, queue: OperationQueue.main) { [weak self] notification in
+            guard let self = self else { return }
+            if let userInfo = notification.userInfo as? [String: VipFreeNumType], let myEnum = userInfo["VipFreeNumType"] {
+                if myEnum == self.vipFreeNumType {
+                    self.updateVipView()
+                }
+            }
+        }
+        
+        updateVipView()
+    }
+
+    func updateVipView() {
+        switch style {
+        case .generate:
+            setVip(vip: isIconVipBlock?() ?? false)
+        }
+    }
+    
+    func setBtnEnabled(isEnabled:Bool) {
+        button.isEnabled = isEnabled
+//        button.alpha = isEnabled ? 1.0 : 0.6
+    }
+    
+    var isEnabled:Bool{
+        return button.isEnabled
+    }
+    
+    func setVip(vip:Bool) {
+        
+        if loading { //loading,正在显示转圈动画
+            return
+        }
+        
+        if vip {
+            button.setImage(UIImage(named: "btnImage_vip"), for: .normal)
+        }else{
+            button.setImage(nil, for: .normal)
+        }
+    }
+    
+}
+//创造按钮
+extension TSAppBtnView{
+
+    func setUpGenerate() {
+        button = kCreateNormalSubmitBtn(
+            title: title,
+            frame: CGRectMake(0, 0, k_ScreenWidth - 32, 48),
+            action: { [weak self]  in
+            guard let self = self else { return }
+            if let vc = WindowHelper.getCurrentViewController() {
+                if kJudgeVip(externalBool: isClickVipBlock?() ?? false, vc: vc) { return }  //判断 vip
+            }
+
+            clickBlock?()
+        })
+        contentView.addSubview(button)
+        button.snp.makeConstraints { make in
+            make.center.equalToSuperview()
+            make.width.equalTo(button.width)
+            make.height.equalTo(button.height)
+        }
+   
+        
+        viewH = 48
+    }
+}
+//创造按钮
+extension TSAppBtnView{
+    
+    private func loadingAnimation(loading:Bool) {
+        if loading {
+            button.setImage(UIImage(named: "generated_loading"), for: .normal)
+            self.button.imageView?.startRotating()
+        }else {
+            button.imageView?.stopRotating()
+            updateVipView()
+        }
+    }
+    
+}
+//常用提交按钮
+func kCreateNormalSubmitBtn(title:String,frame:CGRect,action: (() -> Void)? = nil) -> UIButton {
+    let btn = TSNormalSubmitBtn()
+    btn.frame = frame
+    btn.setUpButton(title:title,font: UIFont.font(size: 16,weight: .medium),titleColor:.black,corner: frame.height/2,action: action)
+    btn.setTitleImageSpace(spacing: 8)
+
+    var buttonBgImage = UIImage(named: "submit_btn_bg")!
+    buttonBgImage = buttonBgImage.resizableImage(withCapInsets: UIEdgeInsets(top:24, left: 24, bottom: 24, right: 24), resizingMode: .stretch)
+    btn.setBackgroundImage(buttonBgImage, for: .normal)
+    
+    var buttonDisBgImage = UIImage(named: "submit_btn_dis_bg")!
+    buttonDisBgImage = buttonDisBgImage.resizableImage(withCapInsets: UIEdgeInsets(top:24, left: 24, bottom: 24, right: 24), resizingMode: .stretch)
+    btn.setBackgroundImage(buttonDisBgImage, for: .disabled)
+    
+    return btn
+}
+

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff