Переглянути джерело

4.3a改造:重写了部分基类

kln 1 тиждень тому
батько
коміт
eb95089130
46 змінених файлів з 448 додано та 698 видалено
  1. 43 35
      AIPlayRingtones.xcodeproj/project.pbxproj
  2. 6 0
      AIPlayRingtones/AIPlayRingtones-Bridging-Header.h
  3. 1 1
      AIPlayRingtones/AppDelegate.swift
  4. 3 3
      AIPlayRingtones/AppPage/APAudioToRingVC/View/ASRTRFileView.swift
  5. 2 2
      AIPlayRingtones/AppPage/APAudioToRingVC/View/ASRTRStyleView.swift
  6. 1 1
      AIPlayRingtones/AppPage/APRingTonesVC/APRingStyleVC/APRingStyleVC.swift
  7. 1 1
      AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/Model/ASGenerateStyleModel.swift
  8. 1 1
      AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/Model/ASRingGenerateSecModel.swift
  9. 2 2
      AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/View/ASDurationColView.swift
  10. 1 1
      AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/View/ASPromptTextView.swift
  11. 1 1
      AIPlayRingtones/AppPage/APSettingVC/APSettingVC+Col.swift
  12. 1 1
      AIPlayRingtones/AppPage/ASBusinessWebVC/ASBusinessWebVC.swift
  13. 1 1
      AIPlayRingtones/AppPage/ASCommonView/ASBtnView/ASAppBtnView.swift
  14. 1 2
      AIPlayRingtones/AppPage/ASCommonView/ASBtnView/ASLeftHeaderView.swift
  15. 0 292
      AIPlayRingtones/AppPage/ASRingGeneratorVC/ASRingGeneratorBaseVC.swift
  16. 1 1
      AIPlayRingtones/AppPage/CustomTabBarController/CustomTabBarController.m
  17. 0 90
      AIPlayRingtones/Classes/BaseClass/TSBaseCollectionCell.swift
  18. 0 52
      AIPlayRingtones/Classes/BaseClass/TSBaseModel.swift
  19. 0 17
      AIPlayRingtones/Classes/BaseClass/TSBaseNavigationC.swift
  20. 0 40
      AIPlayRingtones/Classes/BaseClass/TSBaseTabViewCell.swift
  21. 2 73
      AIPlayRingtones/Classes/BaseClass/TSBaseVC.swift
  22. 0 41
      AIPlayRingtones/Classes/BaseClass/TSBaseView.swift
  23. 0 24
      AIPlayRingtones/Classes/BaseClass/TSBaseViewModel.swift
  24. 1 1
      AIPlayRingtones/Classes/GlobalImports/GlobalImports.swift
  25. 0 0
      AIPlayRingtones/Classes/GlobalImports/GlobalMacros.h
  26. 21 0
      AIPlayRingtones/Common/BaseClass/ASBaseCollectionCell.h
  27. 48 0
      AIPlayRingtones/Common/BaseClass/ASBaseCollectionCell.m
  28. 20 0
      AIPlayRingtones/Common/BaseClass/ASBaseCollectionReusableView.h
  29. 43 0
      AIPlayRingtones/Common/BaseClass/ASBaseCollectionReusableView.m
  30. 28 0
      AIPlayRingtones/Common/BaseClass/ASBaseModel.swift
  31. 21 0
      AIPlayRingtones/Common/BaseClass/ASBaseNavContentBarView.h
  32. 37 0
      AIPlayRingtones/Common/BaseClass/ASBaseNavContentBarView.m
  33. 0 0
      AIPlayRingtones/Common/BaseClass/ASBaseNavigationController.h
  34. 0 0
      AIPlayRingtones/Common/BaseClass/ASBaseNavigationController.m
  35. 0 0
      AIPlayRingtones/Common/BaseClass/ASBaseView.h
  36. 0 0
      AIPlayRingtones/Common/BaseClass/ASBaseView.m
  37. 32 0
      AIPlayRingtones/Common/BaseClass/ASNormalNavigationBarView.h
  38. 114 0
      AIPlayRingtones/Common/BaseClass/ASNormalNavigationBarView.m
  39. 4 4
      AIPlayRingtones/Common/TSNetWork/TSNetWork+Business.swift
  40. 1 1
      AIPlayRingtones/CommonView/ASGeneratorView/ASGeneratorErrorView.swift
  41. 1 1
      AIPlayRingtones/CommonView/ASGeneratorView/ASGeneratorLoadingView.swift
  42. 1 1
      AIPlayRingtones/CommonView/ASGeneratorView/ASGeneratorView.swift
  43. 1 1
      AIPlayRingtones/CommonView/ASPageNullView.swift
  44. 1 1
      AIPlayRingtones/CommonView/ASRingLoadingView.swift
  45. 3 3
      AIPlayRingtones/CommonView/ASRingToneCellView.swift
  46. 3 3
      AIPlayRingtones/Data/ASActionInfoModel.swift

+ 43 - 35
AIPlayRingtones.xcodeproj/project.pbxproj

@@ -27,23 +27,17 @@
 		3DBEA0CF2DE69B2E000C6859 /* WindowHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0AF2DE69B2E000C6859 /* WindowHelper.swift */; };
 		3DBEA0D12DE69B2E000C6859 /* TSBasicItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA07A2DE69B2E000C6859 /* TSBasicItemModel.swift */; };
 		3DBEA0D22DE69B2E000C6859 /* Array+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0832DE69B2E000C6859 /* Array+Ex.swift */; };
-		3DBEA0D82DE69B2E000C6859 /* TSBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0732DE69B2E000C6859 /* TSBaseModel.swift */; };
 		3DBEA0D92DE69B2E000C6859 /* UIImageView+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0912DE69B2E000C6859 /* UIImageView+Ex.swift */; };
-		3DBEA0DC2DE69B2E000C6859 /* TSBaseNavigationC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0752DE69B2E000C6859 /* TSBaseNavigationC.swift */; };
-		3DBEA0E02DE69B2E000C6859 /* TSBaseTabViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0762DE69B2E000C6859 /* TSBaseTabViewCell.swift */; };
 		3DBEA0E12DE69B2E000C6859 /* Color+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA07F2DE69B2E000C6859 /* Color+Ex.swift */; };
 		3DBEA0E82DE69B2E000C6859 /* UIView+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0962DE69B2E000C6859 /* UIView+Ex.swift */; };
 		3DBEA0E92DE69B2E000C6859 /* TSBaseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0772DE69B2E000C6859 /* TSBaseVC.swift */; };
 		3DBEA0EA2DE69B2E000C6859 /* UIView+Rotating.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0982DE69B2E000C6859 /* UIView+Rotating.swift */; };
 		3DBEA0EB2DE69B2E000C6859 /* Text+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0812DE69B2E000C6859 /* Text+Ex.swift */; };
 		3DBEA0EC2DE69B2E000C6859 /* UILabel+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0922DE69B2E000C6859 /* UILabel+Ex.swift */; };
-		3DBEA0ED2DE69B2E000C6859 /* TSBaseCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0722DE69B2E000C6859 /* TSBaseCollectionCell.swift */; };
 		3DBEA0EF2DE69B2E000C6859 /* UIColor+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA08D2DE69B2E000C6859 /* UIColor+Ex.swift */; };
 		3DBEA0F02DE69B2E000C6859 /* Font+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0802DE69B2E000C6859 /* Font+Ex.swift */; };
 		3DBEA0F12DE69B2E000C6859 /* TSFileManagerTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0AA2DE69B2E000C6859 /* TSFileManagerTool.swift */; };
 		3DBEA0F32DE69B2E000C6859 /* TSRandomTextTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0A22DE69B2E000C6859 /* TSRandomTextTool.swift */; };
-		3DBEA0F42DE69B2E000C6859 /* TSBaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0782DE69B2E000C6859 /* TSBaseView.swift */; };
-		3DBEA0F52DE69B2E000C6859 /* TSBaseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0792DE69B2E000C6859 /* TSBaseViewModel.swift */; };
 		3DBEA0F62DE69B2E000C6859 /* TSCustomAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0A82DE69B2E000C6859 /* TSCustomAlertController.swift */; };
 		3DBEA0FA2DE69B2E000C6859 /* TSBaseNavigationBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA0742DE69B2E000C6859 /* TSBaseNavigationBarView.swift */; };
 		3DBEA0FC2DE69B2E000C6859 /* UIFont+Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA08F2DE69B2E000C6859 /* UIFont+Ex.swift */; };
@@ -62,9 +56,14 @@
 		3DBEA11A2DE6B086000C6859 /* CustomTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA1192DE6B086000C6859 /* CustomTabBarController.m */; };
 		3DBEA11E2DE6B229000C6859 /* NSString+AS.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA11D2DE6B229000C6859 /* NSString+AS.m */; };
 		3DBEA1252DE6B36D000C6859 /* UIColor+AS.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA1242DE6B36D000C6859 /* UIColor+AS.m */; };
-		3DBEA1272DE6BA99000C6859 /* GlobalImportsOC.h in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA1262DE6BA96000C6859 /* GlobalImportsOC.h */; };
+		3DBEA1272DE6BA99000C6859 /* GlobalMacros.h in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA1262DE6BA96000C6859 /* GlobalMacros.h */; };
 		3DBEA12B2DE6BCE3000C6859 /* ASBaseNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA12A2DE6BCE3000C6859 /* ASBaseNavigationController.m */; };
 		3DBEA12E2DE6BF19000C6859 /* ASBaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA12D2DE6BF19000C6859 /* ASBaseView.m */; };
+		3DBEA1312DE6D825000C6859 /* ASBaseCollectionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA1302DE6D825000C6859 /* ASBaseCollectionCell.m */; };
+		3DBEA1342DE6D862000C6859 /* ASBaseCollectionReusableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA1332DE6D862000C6859 /* ASBaseCollectionReusableView.m */; };
+		3DBEA1362DE6D9A3000C6859 /* ASBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA1352DE6D9A2000C6859 /* ASBaseModel.swift */; };
+		3DBEA13D2DE6DC38000C6859 /* ASBaseNavContentBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA13C2DE6DC38000C6859 /* ASBaseNavContentBarView.m */; };
+		3DBEA1402DE6DD18000C6859 /* ASNormalNavigationBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBEA13F2DE6DD18000C6859 /* ASNormalNavigationBarView.m */; };
 		3DCD56F32DDAE3E3004AAB5B /* ASRingToneCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DCD56F22DDAE3DF004AAB5B /* ASRingToneCellView.swift */; };
 		3DCD56F52DDAE42A004AAB5B /* ASViewTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DCD56F42DDAE421004AAB5B /* ASViewTool.swift */; };
 		3DCD56F92DDAE481004AAB5B /* TSBusinessAudioPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DCD56F62DDAE481004AAB5B /* TSBusinessAudioPlayer.swift */; };
@@ -153,14 +152,8 @@
 		3DB4D4A92DDDCEA50082596A /* Poppins-BoldItalic.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Poppins-BoldItalic.otf"; sourceTree = "<group>"; };
 		3DB4D4B12DDF0B940082596A /* FakeBlurView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeBlurView.swift; sourceTree = "<group>"; };
 		3DB4D4B42DE025910082596A /* ASTutorialsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ASTutorialsVC.swift; sourceTree = "<group>"; };
-		3DBEA0722DE69B2E000C6859 /* TSBaseCollectionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseCollectionCell.swift; sourceTree = "<group>"; };
-		3DBEA0732DE69B2E000C6859 /* TSBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseModel.swift; sourceTree = "<group>"; };
 		3DBEA0742DE69B2E000C6859 /* TSBaseNavigationBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseNavigationBarView.swift; sourceTree = "<group>"; };
-		3DBEA0752DE69B2E000C6859 /* TSBaseNavigationC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseNavigationC.swift; sourceTree = "<group>"; };
-		3DBEA0762DE69B2E000C6859 /* TSBaseTabViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseTabViewCell.swift; sourceTree = "<group>"; };
 		3DBEA0772DE69B2E000C6859 /* TSBaseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseVC.swift; sourceTree = "<group>"; };
-		3DBEA0782DE69B2E000C6859 /* TSBaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseView.swift; sourceTree = "<group>"; };
-		3DBEA0792DE69B2E000C6859 /* TSBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBaseViewModel.swift; sourceTree = "<group>"; };
 		3DBEA07A2DE69B2E000C6859 /* TSBasicItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBasicItemModel.swift; sourceTree = "<group>"; };
 		3DBEA07F2DE69B2E000C6859 /* Color+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+Ex.swift"; sourceTree = "<group>"; };
 		3DBEA0802DE69B2E000C6859 /* Font+Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+Ex.swift"; sourceTree = "<group>"; };
@@ -199,11 +192,20 @@
 		3DBEA11D2DE6B229000C6859 /* NSString+AS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+AS.m"; sourceTree = "<group>"; };
 		3DBEA1232DE6B36D000C6859 /* UIColor+AS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIColor+AS.h"; sourceTree = "<group>"; };
 		3DBEA1242DE6B36D000C6859 /* UIColor+AS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIColor+AS.m"; sourceTree = "<group>"; };
-		3DBEA1262DE6BA96000C6859 /* GlobalImportsOC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GlobalImportsOC.h; sourceTree = "<group>"; };
+		3DBEA1262DE6BA96000C6859 /* GlobalMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GlobalMacros.h; sourceTree = "<group>"; };
 		3DBEA1292DE6BCE3000C6859 /* ASBaseNavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASBaseNavigationController.h; sourceTree = "<group>"; };
 		3DBEA12A2DE6BCE3000C6859 /* ASBaseNavigationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASBaseNavigationController.m; sourceTree = "<group>"; };
 		3DBEA12C2DE6BF19000C6859 /* ASBaseView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASBaseView.h; sourceTree = "<group>"; };
 		3DBEA12D2DE6BF19000C6859 /* ASBaseView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASBaseView.m; sourceTree = "<group>"; };
+		3DBEA12F2DE6D825000C6859 /* ASBaseCollectionCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASBaseCollectionCell.h; sourceTree = "<group>"; };
+		3DBEA1302DE6D825000C6859 /* ASBaseCollectionCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASBaseCollectionCell.m; sourceTree = "<group>"; };
+		3DBEA1322DE6D862000C6859 /* ASBaseCollectionReusableView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASBaseCollectionReusableView.h; sourceTree = "<group>"; };
+		3DBEA1332DE6D862000C6859 /* ASBaseCollectionReusableView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASBaseCollectionReusableView.m; sourceTree = "<group>"; };
+		3DBEA1352DE6D9A2000C6859 /* ASBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ASBaseModel.swift; sourceTree = "<group>"; };
+		3DBEA13B2DE6DC38000C6859 /* ASBaseNavContentBarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASBaseNavContentBarView.h; sourceTree = "<group>"; };
+		3DBEA13C2DE6DC38000C6859 /* ASBaseNavContentBarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASBaseNavContentBarView.m; sourceTree = "<group>"; };
+		3DBEA13E2DE6DD18000C6859 /* ASNormalNavigationBarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASNormalNavigationBarView.h; sourceTree = "<group>"; };
+		3DBEA13F2DE6DD18000C6859 /* ASNormalNavigationBarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASNormalNavigationBarView.m; sourceTree = "<group>"; };
 		3DCD56F22DDAE3DF004AAB5B /* ASRingToneCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ASRingToneCellView.swift; sourceTree = "<group>"; };
 		3DCD56F42DDAE421004AAB5B /* ASViewTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ASViewTool.swift; sourceTree = "<group>"; };
 		3DCD56F62DDAE481004AAB5B /* TSBusinessAudioPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBusinessAudioPlayer.swift; sourceTree = "<group>"; };
@@ -342,19 +344,9 @@
 		3DBEA07B2DE69B2E000C6859 /* BaseClass */ = {
 			isa = PBXGroup;
 			children = (
-				3DBEA0722DE69B2E000C6859 /* TSBaseCollectionCell.swift */,
-				3DBEA0732DE69B2E000C6859 /* TSBaseModel.swift */,
 				3DBEA0742DE69B2E000C6859 /* TSBaseNavigationBarView.swift */,
-				3DBEA0752DE69B2E000C6859 /* TSBaseNavigationC.swift */,
-				3DBEA0762DE69B2E000C6859 /* TSBaseTabViewCell.swift */,
 				3DBEA0772DE69B2E000C6859 /* TSBaseVC.swift */,
-				3DBEA0782DE69B2E000C6859 /* TSBaseView.swift */,
-				3DBEA0792DE69B2E000C6859 /* TSBaseViewModel.swift */,
 				3DBEA07A2DE69B2E000C6859 /* TSBasicItemModel.swift */,
-				3DBEA1292DE6BCE3000C6859 /* ASBaseNavigationController.h */,
-				3DBEA12A2DE6BCE3000C6859 /* ASBaseNavigationController.m */,
-				3DBEA12C2DE6BF19000C6859 /* ASBaseView.h */,
-				3DBEA12D2DE6BF19000C6859 /* ASBaseView.m */,
 			);
 			path = BaseClass;
 			sourceTree = "<group>";
@@ -379,7 +371,6 @@
 		3DBEA09B2DE69B2E000C6859 /* Ex */ = {
 			isa = PBXGroup;
 			children = (
-				3DBEA1282DE6BC3E000C6859 /* Base class */,
 				3DBEA11B2DE6B1F3000C6859 /* OC */,
 				3DBEA0822DE69B2E000C6859 /* SwiftUI */,
 				3DBEA0832DE69B2E000C6859 /* Array+Ex.swift */,
@@ -403,7 +394,7 @@
 		3DBEA09D2DE69B2E000C6859 /* GlobalImports */ = {
 			isa = PBXGroup;
 			children = (
-				3DBEA1262DE6BA96000C6859 /* GlobalImportsOC.h */,
+				3DBEA1262DE6BA96000C6859 /* GlobalMacros.h */,
 				3DBEA09C2DE69B2E000C6859 /* GlobalImports.swift */,
 			);
 			path = GlobalImports;
@@ -508,11 +499,24 @@
 			path = OC;
 			sourceTree = "<group>";
 		};
-		3DBEA1282DE6BC3E000C6859 /* Base class */ = {
+		3DBEA1392DE6DBE6000C6859 /* BaseClass */ = {
 			isa = PBXGroup;
 			children = (
+				3DBEA1292DE6BCE3000C6859 /* ASBaseNavigationController.h */,
+				3DBEA12A2DE6BCE3000C6859 /* ASBaseNavigationController.m */,
+				3DBEA12C2DE6BF19000C6859 /* ASBaseView.h */,
+				3DBEA12D2DE6BF19000C6859 /* ASBaseView.m */,
+				3DBEA12F2DE6D825000C6859 /* ASBaseCollectionCell.h */,
+				3DBEA1302DE6D825000C6859 /* ASBaseCollectionCell.m */,
+				3DBEA1322DE6D862000C6859 /* ASBaseCollectionReusableView.h */,
+				3DBEA1332DE6D862000C6859 /* ASBaseCollectionReusableView.m */,
+				3DBEA1352DE6D9A2000C6859 /* ASBaseModel.swift */,
+				3DBEA13B2DE6DC38000C6859 /* ASBaseNavContentBarView.h */,
+				3DBEA13C2DE6DC38000C6859 /* ASBaseNavContentBarView.m */,
+				3DBEA13E2DE6DD18000C6859 /* ASNormalNavigationBarView.h */,
+				3DBEA13F2DE6DD18000C6859 /* ASNormalNavigationBarView.m */,
 			);
-			path = "Base class";
+			path = BaseClass;
 			sourceTree = "<group>";
 		};
 		3DCD56F82DDAE481004AAB5B /* TSAudioPlayer */ = {
@@ -686,6 +690,7 @@
 		A848F88F2DD6D4E800B746EC /* Common */ = {
 			isa = PBXGroup;
 			children = (
+				3DBEA1392DE6DBE6000C6859 /* BaseClass */,
 				3DB4D4AD2DDDCED00082596A /* Ex */,
 				3DCD57172DDB1158004AAB5B /* TSBandRingTool */,
 				3DCD57032DDB1118004AAB5B /* TSPurchaseTool */,
@@ -999,10 +1004,14 @@
 			inputFileListPaths = (
 				"${PODS_ROOT}/Target Support Files/Pods-AIPlayRingtones/Pods-AIPlayRingtones-frameworks-${CONFIGURATION}-input-files.xcfilelist",
 			);
+			inputPaths = (
+			);
 			name = "[CP] Embed Pods Frameworks";
 			outputFileListPaths = (
 				"${PODS_ROOT}/Target Support Files/Pods-AIPlayRingtones/Pods-AIPlayRingtones-frameworks-${CONFIGURATION}-output-files.xcfilelist",
 			);
+			outputPaths = (
+			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AIPlayRingtones/Pods-AIPlayRingtones-frameworks.sh\"\n";
@@ -1052,7 +1061,9 @@
 				A848F8AD2DD6D75900B746EC /* APSettingVC.swift in Sources */,
 				A848F8912DD6D50000B746EC /* Common.swift in Sources */,
 				3DCD57192DDB1158004AAB5B /* AudioTool.swift in Sources */,
+				3DBEA13D2DE6DC38000C6859 /* ASBaseNavContentBarView.m in Sources */,
 				3DCD571A2DDB1158004AAB5B /* ExtAudioConverter.m in Sources */,
+				3DBEA1402DE6DD18000C6859 /* ASNormalNavigationBarView.m in Sources */,
 				3DCD571B2DDB1158004AAB5B /* AudioConverter.m in Sources */,
 				3DB4D4932DDC25C10082596A /* APAudioToRingVM.swift in Sources */,
 				3DCD571C2DDB1158004AAB5B /* ZHCroppedDelegate.swift in Sources */,
@@ -1067,7 +1078,7 @@
 				A848F8F32DD7528D00B746EC /* ASBaseOperation.swift in Sources */,
 				A848F8BB2DD6E30600B746EC /* APRingTonesVM.swift in Sources */,
 				3DB4D49B2DDC28F20082596A /* APAudioToRingVC+Upload.swift in Sources */,
-				3DBEA1272DE6BA99000C6859 /* GlobalImportsOC.h in Sources */,
+				3DBEA1272DE6BA99000C6859 /* GlobalMacros.h in Sources */,
 				3DB4D4B22DDF0B960082596A /* FakeBlurView.swift in Sources */,
 				3DCD56F32DDAE3E3004AAB5B /* ASRingToneCellView.swift in Sources */,
 				3DCD56FF2DDAFC1B004AAB5B /* ASBusinessFileManager.swift in Sources */,
@@ -1081,6 +1092,7 @@
 				A848F8EE2DD7508300B746EC /* ASRealmManager.swift in Sources */,
 				A848F8B52DD6D83E00B746EC /* APConfig+Color.swift in Sources */,
 				A848F8B92DD6DF7900B746EC /* ASAppBtnView.swift in Sources */,
+				3DBEA1342DE6D862000C6859 /* ASBaseCollectionReusableView.m in Sources */,
 				3DCD56FD2DDAFBE5004AAB5B /* ASDownloadManager.swift in Sources */,
 				3DCD573B2DDB4E61004AAB5B /* ASPageNullView.swift in Sources */,
 				A848F8F12DD7528800B746EC /* ASBaseOperationQueue.swift in Sources */,
@@ -1097,10 +1109,8 @@
 				3DBEA0CF2DE69B2E000C6859 /* WindowHelper.swift in Sources */,
 				3DBEA0D12DE69B2E000C6859 /* TSBasicItemModel.swift in Sources */,
 				3DBEA0D22DE69B2E000C6859 /* Array+Ex.swift in Sources */,
-				3DBEA0D82DE69B2E000C6859 /* TSBaseModel.swift in Sources */,
+				3DBEA1312DE6D825000C6859 /* ASBaseCollectionCell.m in Sources */,
 				3DBEA0D92DE69B2E000C6859 /* UIImageView+Ex.swift in Sources */,
-				3DBEA0DC2DE69B2E000C6859 /* TSBaseNavigationC.swift in Sources */,
-				3DBEA0E02DE69B2E000C6859 /* TSBaseTabViewCell.swift in Sources */,
 				3DBEA0E12DE69B2E000C6859 /* Color+Ex.swift in Sources */,
 				3DBEA0E82DE69B2E000C6859 /* UIView+Ex.swift in Sources */,
 				3DBEA0E92DE69B2E000C6859 /* TSBaseVC.swift in Sources */,
@@ -1108,18 +1118,16 @@
 				3DBEA12B2DE6BCE3000C6859 /* ASBaseNavigationController.m in Sources */,
 				3DBEA0EB2DE69B2E000C6859 /* Text+Ex.swift in Sources */,
 				3DBEA0EC2DE69B2E000C6859 /* UILabel+Ex.swift in Sources */,
-				3DBEA0ED2DE69B2E000C6859 /* TSBaseCollectionCell.swift in Sources */,
 				3DBEA0EF2DE69B2E000C6859 /* UIColor+Ex.swift in Sources */,
 				3DBEA0F02DE69B2E000C6859 /* Font+Ex.swift in Sources */,
 				3DBEA0F12DE69B2E000C6859 /* TSFileManagerTool.swift in Sources */,
 				3DBEA0F32DE69B2E000C6859 /* TSRandomTextTool.swift in Sources */,
-				3DBEA0F42DE69B2E000C6859 /* TSBaseView.swift in Sources */,
-				3DBEA0F52DE69B2E000C6859 /* TSBaseViewModel.swift in Sources */,
 				3DBEA0F62DE69B2E000C6859 /* TSCustomAlertController.swift in Sources */,
 				3DBEA0FA2DE69B2E000C6859 /* TSBaseNavigationBarView.swift in Sources */,
 				3DBEA0FC2DE69B2E000C6859 /* UIFont+Ex.swift in Sources */,
 				3DBEA0FE2DE69B2E000C6859 /* UIButton+Ex.swift in Sources */,
 				3DBEA0FF2DE69B2E000C6859 /* TSCustomStackView.swift in Sources */,
+				3DBEA1362DE6D9A3000C6859 /* ASBaseModel.swift in Sources */,
 				3DBEA1002DE69B2E000C6859 /* UIViewController+Ex.swift in Sources */,
 				3DBEA1012DE69B2E000C6859 /* Date+Ex.swift in Sources */,
 				3DBEA1032DE69B2E000C6859 /* NSString+Ex.swift in Sources */,

+ 6 - 0
AIPlayRingtones/AIPlayRingtones-Bridging-Header.h

@@ -8,3 +8,9 @@
 #import "ExtAudioConverter.h"
 #import "AudioConverter.h"
 #import "CustomTabBarController.h"
+#import "ASBaseView.h"
+#import "ASBaseNavigationController.h"
+#import "ASBaseCollectionCell.h"
+#import "ASBaseCollectionReusableView.h"
+#import "ASBaseNavContentBarView.h"
+#import "ASNormalNavigationBarView.h"

+ 1 - 1
AIPlayRingtones/AppDelegate.swift

@@ -43,7 +43,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
 //                UserDefaults.standard.synchronize()
 //                goToTab()
 //            }
-//            let navi = TSBaseNavigationC(rootViewController: bootPageVC)
+//            let navi = ASBaseNavigationController(rootViewController: bootPageVC)
 //            window?.rootViewController = navi
 //        } else {
             goToTab()

+ 3 - 3
AIPlayRingtones/AppPage/APAudioToRingVC/View/ASRTRFileView.swift

@@ -8,7 +8,7 @@
 
 
 
-class ASRTRFileUploadView: TSBaseView {
+class ASRTRFileUploadView: ASBaseView {
     
     var clickComplete:(()->Void)?
     var clickPlayComplete:(()->Void)?
@@ -64,7 +64,7 @@ class ASRTRFileUploadView: TSBaseView {
 }
 
 
-class ASRTRFileplayView: TSBaseView {
+class ASRTRFileplayView: ASBaseView {
     
     var clickComplete:(()->Void)?
     var clickPlayComplete:(()->Void)?
@@ -126,7 +126,7 @@ class ASRTRFileplayView: TSBaseView {
 
 }
 
-class ASRTRFileView: TSBaseView {
+class ASRTRFileView: ASBaseView {
     
     var clickUpFileComplete:(()->Void)
     var clickPlayComplete:(()->Void)

+ 2 - 2
AIPlayRingtones/AppPage/APAudioToRingVC/View/ASRTRStyleView.swift

@@ -5,7 +5,7 @@
 //  Created by mini on 2025/5/19.
 //
 
-class ASRTRStyleView: TSBaseView {
+class ASRTRStyleView: ASBaseView {
     
     var selectedCompleted:((ASGenerateStyleModel,Int)->Void)?
 
@@ -95,7 +95,7 @@ extension ASRTRStyleView: TSSimpleCollectionViewDelegate {
 }
 
 
-class ASRTRStyleViewCell: TSBaseCollectionCell ,TSSimpleConfigurableView {
+class ASRTRStyleViewCell: ASBaseCollectionCell ,TSSimpleConfigurableView {
     
     weak var delegate: (any TSSimpleCollectionViewDelegate)?
     var indexPath: IndexPath = IndexPath(item: 0, section: 0)

+ 1 - 1
AIPlayRingtones/AppPage/APRingTonesVC/APRingStyleVC/APRingStyleVC.swift

@@ -104,7 +104,7 @@ extension APRingStyleVC: TSSimpleCollectionViewDelegate {
 
 
 
-class APRingStyleCell: TSBaseCollectionCell ,TSSimpleConfigurableView {
+class APRingStyleCell: ASBaseCollectionCell ,TSSimpleConfigurableView {
     
     weak var delegate: (any TSSimpleCollectionViewDelegate)?
     var indexPath: IndexPath = IndexPath(item: 0, section: 0)

+ 1 - 1
AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/Model/ASGenerateStyleModel.swift

@@ -13,7 +13,7 @@ enum ASGenerateType: String {
     case ringToRing     //文生图
 }
 
-class ASGenerateStyleModel: TSBaseModel {
+class ASGenerateStyleModel: ASBaseModel {
     var imageName:String = ""
     var imageText:String = ""
     var prompt:String = ""

+ 1 - 1
AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/Model/ASRingGenerateSecModel.swift

@@ -5,7 +5,7 @@
 //  Created by 100Years on 2025/5/16.
 //
 import ObjectMapper
-class ASRingGenerateSecModel: TSBaseModel {
+class ASRingGenerateSecModel: ASBaseModel {
     var duration:Int = 5
     var vip:Bool = false
     

+ 2 - 2
AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/View/ASDurationColView.swift

@@ -5,7 +5,7 @@
 //  Created by 100Years on 2025/5/15.
 //
 
-class ASGenerateDurationColView: TSBaseView {
+class ASGenerateDurationColView: ASBaseView {
     
     var selectedCompleted:((ASRingGenerateSecModel,Int)->Void)?
     
@@ -69,7 +69,7 @@ extension ASGenerateDurationColView: TSSimpleCollectionViewDelegate {
 
 
 
-class ASDurationColViewCell: TSBaseCollectionCell ,TSSimpleConfigurableView {
+class ASDurationColViewCell: ASBaseCollectionCell ,TSSimpleConfigurableView {
     
     weak var delegate: (any TSSimpleCollectionViewDelegate)?
     var indexPath: IndexPath = IndexPath(item: 0, section: 0)

+ 1 - 1
AIPlayRingtones/AppPage/APRingTonesVC/APRingTonesVC/View/ASPromptTextView.swift

@@ -6,7 +6,7 @@
 //
 
 
-class ASPromptTextView : TSBaseView{
+class ASPromptTextView : ASBaseView{
     
     var randomTextArray:[String]
     var textChangedBlock:((String)->Void)

+ 1 - 1
AIPlayRingtones/AppPage/APSettingVC/APSettingVC+Col.swift

@@ -74,7 +74,7 @@ extension APSettingVC: UICollectionViewDataSource ,UICollectionViewDelegate {
 }
 
 
-class APSettingCell: TSBaseCollectionCell {
+class APSettingCell: ASBaseCollectionCell {
     
     static let cellID = "APSettingCell"
     var itemModel:TSBasicItemModel = TSBasicItemModel(){

+ 1 - 1
AIPlayRingtones/AppPage/ASBusinessWebVC/ASBusinessWebVC.swift

@@ -30,7 +30,7 @@ class ASBusinessWebVC: TSBaseVC , WKNavigationDelegate {
     
     init(urlType: UrlType) {
         self.urlType = urlType
-        super.init(nibName: nil, bundle: nil)
+        super.init()
     }
     
     required init?(coder: NSCoder) {

+ 1 - 1
AIPlayRingtones/AppPage/ASCommonView/ASBtnView/ASAppBtnView.swift

@@ -5,7 +5,7 @@
 //  Created by 100Years on 2025/5/15.
 //
 
-class ASAppBtnView: TSBaseView {
+class ASAppBtnView: ASBaseView {
     enum ViewStyle {
         case generate   //创造类的按钮
     }

+ 1 - 2
AIPlayRingtones/AppPage/ASCommonView/ASBtnView/ASLeftHeaderView.swift

@@ -8,7 +8,7 @@
 
 let kSectionTitleViewH:CGFloat = 56.0
 let kSectionTitleViewCenterYOffset:CGFloat = 6.0
-class ASLeftHeaderView: TSBaseView {
+class ASLeftHeaderView: ASBaseView {
     
     static let viewH:CGFloat = kSectionTitleViewH
     let viewH:CGFloat = ASLeftHeaderView.viewH
@@ -18,7 +18,6 @@ class ASLeftHeaderView: TSBaseView {
         return titleLab
     }()
     override func creatUI() {
-
         contentView.addSubview(titleLab)
         titleLab.snp.makeConstraints { make in
             make.leading.equalTo(16)

+ 0 - 292
AIPlayRingtones/AppPage/ASRingGeneratorVC/ASRingGeneratorBaseVC.swift

@@ -112,295 +112,3 @@ class ASRingGeneratorBaseVC: TSBaseVC {
         closePage()
     }
 }
-
-//class ASRingGeneratorBaseVC: TSBaseVC {
-//    
-//    lazy var topBgView: UIView = {
-//        let topBgView = UIView(frame: CGRectMake(0, 0, k_ScreenWidth, k_ScreenHeight))
-//        topBgView.backgroundColor = .black.withAlphaComponent(0.5)
-//        topBgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)))
-//        return topBgView
-//    }()
-//    
-//    var bottomViewH:CGFloat = 340{
-//        didSet{
-//            bottomView.frame = CGRectMake(0, k_ScreenHeight-bottomViewH, k_ScreenWidth, bottomViewH)
-//        }
-//    }
-//    
-//    lazy var bgImageView: UIImageView = {
-//        let bgImageView = UIImageView()
-//        bgImageView.image = UIImage(named: "bottom_alert_bg")?.resizableImage(capInsets:UIEdgeInsets(top:40, left: 30, bottom: 30, right: 170))
-//        bgImageView.contentMode = .scaleToFill
-//        return bgImageView
-//    }()
-//    
-//    lazy var bottomView: UIView = {
-//        let bottomView = UIView(frame: CGRectMake(0, k_ScreenHeight-bottomViewH, k_ScreenWidth, bottomViewH))
-//        bottomView.addSubview(bgImageView)
-//        bgImageView.snp.makeConstraints { make in
-//            make.bottom.top.leading.right.equalTo(0)
-//        }
-//        return bottomView
-//    }()
-//    
-//
-//    lazy var xBtn: UIButton = {
-//        let xBtn = ASUIExpandedTouchButton()
-//        xBtn.setUpButton(image: UIImage(named: "x")) { [weak self]  in
-////        let xBtn = UIButton.createButton(image: UIImage(named: "x")) { [weak self]  in
-//            guard let self = self else { return }
-//            clickXBtn()
-//        }
-//        return xBtn
-//    }()
-//    
-//    lazy var againBtn: UIButton = {
-//        let againBtn = UIButton.createButton(title:"Try Again".localized,backgroundColor:.themeColor,font: UIFont.font(size: 14,weight: .medium),titleColor:.white,corner: 24)
-//        { [weak self]  in
-//            guard let self = self else { return }
-//            clickAgainBtn()
-//        }
-//        return againBtn
-//    }()
-//    
-//    lazy var saveBtn: UIButton = {
-//        let saveBtn = UIButton.createButton(title:"Save".localized,backgroundColor:.themeColor,font: UIFont.font(size: 14,weight: .medium),titleColor:.white,corner: 24)
-//        { [weak self]  in
-//            guard let self = self else { return }
-//            clickSubmitBtn()
-//        }
-//        kDelayMainShort {
-//            saveBtn.addGradientBg(colors: ["#E961F6".uiColor.cgColor,"#7E57F4".uiColor.cgColor])
-//        }
-//        return saveBtn
-//    }()
-//    
-//    
-//    lazy var leftBtn: UIButton = {
-//        let leftBtn = UIButton.createButton(title:"Copy".localized,backgroundColor: .fromHex("#FFFFFF", alpha: 0.4),font: UIFont.font(size: 14,weight: .medium),titleColor:.white,corner: 24)
-//        { [weak self]  in
-//            guard let self = self else { return }
-//            clickLeftBtn()
-//        }
-//        leftBtn.isHidden = true
-//        return leftBtn
-//    }()
-//    
-//    lazy var rightBtn: UIButton = {
-//        
-//        let rightBtn = UIButton.createButton(title:"Save".localized,backgroundColor:.themeColor,font: UIFont.font(size: 14,weight: .medium),titleColor:.white,corner: 24)
-//        { [weak self]  in
-//            guard let self = self else { return }
-//            clickRightBtn()
-//        }
-//        
-//        kDelayMainShort {
-//            rightBtn.addGradientBg(colors: ["#E961F6".uiColor.cgColor,"#7E57F4".uiColor.cgColor])
-//        }
-//        rightBtn.isHidden = true
-//        return rightBtn
-//    }()
-//    
-//
-//    lazy var regenerateBtn: UIButton = {
-//        let regenerateBtn = UIButton.createButton(
-//            title: "regenerate",
-//            image: UIImage(named: "refresh_gary"),
-//            backgroundColor:.white.withAlphaComponent(0.1),
-//            font: .font(size: 12),
-//            titleColor: .white.withAlphaComponent(0.6),
-//            corner: 8.0)
-//        { [weak self]  in
-//            guard let self = self else { return }
-//            clickAgainBtn()
-//        }
-//        regenerateBtn.contentEdgeInsets = UIEdgeInsets(top: 4, left: 7, bottom: 4, right: 7)
-//        regenerateBtn.imageEdgeInsets = UIEdgeInsets(top: 0, left: -4, bottom: 0, right: 0)
-//        regenerateBtn.isHidden = true
-//        return regenerateBtn
-//    }()
-//    
-//    //############################## 失败 View ##############################
-//    
-//    lazy var failLabel: UILabel = {
-//        let failLabel = UILabel.createLabel(text: "Generation Failed".localized,font: .font(size: 14.0),textColor: .white.withAlphaComponent(0.6),textAlignment: .center)
-//        return failLabel
-//    }()
-//    
-//    lazy var failView: UIView = {
-//        let failView = UIView()
-//        let failImageView = UIImageView.createImageView(imageName: "generation_failed")
-//    
-//        failView.addSubview(failImageView)
-//        failImageView.snp.makeConstraints { make in
-//            make.top.equalTo(0)
-//            make.centerX.equalToSuperview()
-//            make.width.equalTo(88)
-//            make.height.equalTo(88)
-//        }
-//        
-//        failView.addSubview(failLabel)
-//        failLabel.snp.makeConstraints { make in
-//            make.top.equalTo(failImageView.snp.bottom).offset(16)
-//            make.leading.equalTo(10)
-//            make.trailing.equalTo(-10)
-//            make.width.greaterThanOrEqualTo(88)
-//            make.height.equalTo(14)
-//            make.bottom.equalTo(0)
-//        }
-//        failView.isHidden = true
-//        return failView
-//    }()
-//    
-//    //############################## 结果 View ##############################
-//    lazy var resultIconImageView: UIImageView = {
-//        let resultIconImageView = UIImageView.createImageView(imageName: "")
-//        return resultIconImageView
-//    }()
-//    
-//    lazy var successTopView: UIView = {
-//        let resultView = UIView()
-//
-//        resultView.addSubview(resultIconImageView)
-//        resultIconImageView.snp.makeConstraints { make in
-//            make.top.equalTo(-15)
-//            make.trailing.equalTo(-28)
-//            make.width.equalTo(88)
-//            make.height.equalTo(88)
-//        }
-//        
-//        let successLabel = UILabel.createLabel(text: "Successfully Generated".localized,font: .font(size: 18.0),textColor: .themeColor,textAlignment: .left)
-//        resultView.addSubview(successLabel)
-//        successLabel.snp.makeConstraints { make in
-//            make.top.equalTo(30)
-//            make.leading.equalTo(20)
-//            make.trailing.equalTo(resultIconImageView.snp.leading).offset(-20)
-//            make.height.equalTo(18)
-//        }
-//        kDelayMainShort {
-//            successLabel.applyGradient(colors: [UIColor.white,"#D999FF".uiColor])
-//        }
-//        resultView.isHidden = true
-//        return resultView
-//    }()
-//    
-//    //############################## 自定义 View ##############################
-//    lazy var diyView: UIView = {
-//        let diyView = UIView()
-// 
-//        diyView.addSubview(failView)
-//        failView.snp.makeConstraints { make in
-//            make.centerY.equalToSuperview().offset(-40)
-//            make.centerX.equalToSuperview()
-//        }
-//        
-//        diyView.addSubview(successTopView)
-//        successTopView.snp.makeConstraints { make in
-//            make.leading.top.trailing.equalTo(0)
-//            make.height.equalTo(73)
-//        }
-//        
-//
-//        return diyView
-//    }()
-//    
-//    //点击空白,关闭页面
-//    var isClickTheBlankClosePage = true
-//    
-//    override func createView() {
-//        view.backgroundColor = .clear
-//        setNavBarViewHidden(true)
-//
-//        contentView.addSubview(topBgView)
-//        contentView.addSubview(bottomView)
-//    
-//        let safeBottom = k_Height_safeAreaInsetsBottom()
-//        //重试
-//        bottomView.addSubview(againBtn)
-//        againBtn.snp.makeConstraints { make in
-//            make.bottom.equalTo(-16-safeBottom)
-//            make.centerX.equalToSuperview()
-//            make.width.equalTo(228)
-//            make.height.equalTo(48)
-//        }
-//        
-//        //保存
-//        bottomView.addSubview(saveBtn)
-//        saveBtn.snp.makeConstraints { make in
-//            make.bottom.equalTo(-16-safeBottom)
-//            make.centerX.equalToSuperview()
-//            make.width.equalTo(228)
-//            make.height.equalTo(48)
-//        }
-//        
-//        
-//        //中心点
-//        let centerView = UIView()
-//        bottomView.addSubview(centerView)
-//        centerView.snp.makeConstraints { make in
-//            make.center.equalToSuperview()
-//        }
-//        bottomView.addSubview(leftBtn)
-//        leftBtn.snp.makeConstraints { make in
-//            make.bottom.equalTo(-16-safeBottom)
-//            make.trailing.equalTo(centerView.snp.leading).offset(-8)
-//            make.width.equalTo(163)
-//            make.height.equalTo(48)
-//        }
-//        
-//        bottomView.addSubview(rightBtn)
-//        rightBtn.snp.makeConstraints { make in
-//            make.bottom.equalTo(-16-safeBottom)
-//            make.leading.equalTo(centerView.snp.trailing).offset(8)
-//            make.width.equalTo(163)
-//            make.height.equalTo(48)
-//        }
-//        
-//        bottomView.addSubview(diyView)
-//        diyView.snp.makeConstraints { make in
-//            make.bottom.equalTo(saveBtn.snp.top).offset(-10)
-//            make.top.left.right.equalTo(0)
-//        }
-//        
-//        bottomView.addSubview(xBtn)
-//        xBtn.snp.makeConstraints { make in
-//            make.top.equalTo(0)
-//            make.trailing.equalTo(-6)
-//            make.width.equalTo(24)
-//            make.height.equalTo(24)
-//        }
-//        
-//
-//    }
-//    
-//    func closePage() {
-//        self.dismiss(animated: true, completion: nil)
-//    }
-//
-//    @objc func clickAgainBtn(){
-//        
-//    }
-//    
-//    @objc func clickSubmitBtn(){
-//        
-//    }
-//    
-//    @objc func clickLeftBtn(){
-//        
-//    }
-//    
-//    @objc func clickRightBtn(){
-//        
-//    }
-//    
-//    @objc func clickXBtn(){
-//        closePage()
-//    }
-//    
-//    @objc private func dismissKeyboard() {
-//        if isClickTheBlankClosePage {
-//            closePage()
-//        }
-//    }
-//}

+ 1 - 1
AIPlayRingtones/AppPage/CustomTabBarController/CustomTabBarController.m

@@ -8,7 +8,7 @@
 #import "CustomTabBarController.h"
 #import "NSString+AS.h"
 #import "UIColor+AS.h"
-#import "GlobalImportsOC.h"
+#import "GlobalMacros.h"
 #import "ASBaseNavigationController.h"
 
 @interface CustomTabBarController ()

+ 0 - 90
AIPlayRingtones/Classes/BaseClass/TSBaseCollectionCell.swift

@@ -1,90 +0,0 @@
-//
-//  CWBaseCollectionViewCell.swift
-//  ClockWidget
-//
-//  Created by fff on 2024/11/12.
-//
-
-
-open class TSBaseCollectionCell: UICollectionViewCell  {
-    
-
-    public lazy var bgContentView:UIView = {
-        let view = UIView()
-        view.backgroundColor = .clear
-        return view
-    }()
-    
-    override init(frame: CGRect) {
-        super.init(frame: frame)
-        self.backgroundColor = .clear
-        self.addSubview(bgContentView)
-        bgContentView.snp.makeConstraints { make in
-            make.top.leading.trailing.bottom.equalTo(0)
-        }
-        creatUI()
-        dealThings()
-    }
-    
-    required public init?(coder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-    
-    open func creatUI(){
-        
-    }
-    
-    open func dealThings(){
-        
-    }
-    
-
-    deinit {
-//        debugPrint("<---deinit \(String(describing: self))")
-    }
-
-}
-
-extension TSBaseCollectionCell{
-
-}
-
-
-
-
-
-
-open class TSBaseCollectionnReusableView : UICollectionReusableView   {
-
- 
-    public lazy var bgContentView:UIView = {
-        let view = UIView()
-        view.backgroundColor = .clear
-        return view
-    }()
-    
-    override init(frame: CGRect) {
-        super.init(frame: frame)
-        self.backgroundColor = .clear
-        self.addSubview(bgContentView)
-        bgContentView.snp.makeConstraints { make in
-            make.top.leading.trailing.bottom.equalTo(0)
-        }
-        creatUI()
-    }
-    
-    required public init?(coder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-    
-    open func creatUI(){
-        
-    }
-
-    
-    deinit {
-//        debugPrint("<---deinit \(String(describing: self))")
-    }
-    
-}
-

+ 0 - 52
AIPlayRingtones/Classes/BaseClass/TSBaseModel.swift

@@ -1,52 +0,0 @@
-//
-//  TSBaseModel.swift
-//  TSLiveWallpaper
-//
-//  Created by 100Years on 2024/12/22.
-//
-
-import ObjectMapper
-
-open class TSBaseModel: NSObject, Mappable, NSCopying {
-    public static func model(data: Data) -> TSBaseModel? {
-        do {
-            let object = try JSONSerialization.jsonObject(with: data)
-            if let dict = object as? [String: AnyHashable] {
-                return Self.init(json: dict)
-            }
-        } catch _ {
-            return nil
-        }
-        return nil
-    }
-    
-    open var data: Data? {
-        let json = toJSON()
-        do {
-            let data = try JSONSerialization.data(withJSONObject: json)
-            return data
-        } catch _ {
-            return nil
-        }
-    }
-    
-    required convenience public init?(map: ObjectMapper.Map) {
-        self.init()
-        mapping(map: map)
-    }
-    
-    required convenience public init?(json: [String: Any]) {
-        self.init(JSON: json)
-    }
-    
-    open func mapping(map: ObjectMapper.Map) {}
-    
-    open func copy(with zone: NSZone? = nil) -> Any {
-        let json = toJSON()
-        return Self.init(JSON: json) ?? Self.init(JSON: [:])!
-    }
-    
-//    deinit {
-//        debugPrint("♻️♻️♻️ TGRootViewController -> \(type(of: self)) deinit ♻️♻️♻️")
-//    }
-}

+ 0 - 17
AIPlayRingtones/Classes/BaseClass/TSBaseNavigationC.swift

@@ -1,17 +0,0 @@
-//
-//  TSBaseNavigationC.swift
-//  TSLiveWallpaper
-//
-//  Created by 100Years on 2024/12/20.
-//
-
-import UIKit
-
-open class TSBaseNavigationC: UINavigationController{
-    open override func viewDidLoad() {
-        super.viewDidLoad()
-        self.navigationBar.isHidden = true
-        view.backgroundColor = .clear
-        interactivePopGestureRecognizer?.isEnabled = true;
-    }
-}

+ 0 - 40
AIPlayRingtones/Classes/BaseClass/TSBaseTabViewCell.swift

@@ -1,40 +0,0 @@
-//
-//  CWBaseTabViewCell.swift
-//  ClockWidget
-//
-//  Created by fff on 2024/11/12.
-//
-
-
-open class TSBaseTabViewCell: UITableViewCell {
-    
-    open lazy var bgContentView:UIView = {
-        let view = UIView()
-        view.backgroundColor = .clear
-        return view
-    }()
-    
-    public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
-        super.init(style: style, reuseIdentifier: reuseIdentifier)
-        
-        self.selectionStyle = .none
-        self.backgroundColor = .clear
-        self.addSubview(bgContentView)
-        bgContentView.snp.makeConstraints { make in
-            make.top.leading.trailing.bottom.equalTo(0)
-        }
-        creatUI()
-    }
-    
-    required public init?(coder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-    
-    open func creatUI(){
-        
-    }
-    
-    deinit {
-//        debugPrint("<---deinit \(String(describing: self))")
-    }
-}

+ 2 - 73
AIPlayRingtones/Classes/BaseClass/TSBaseVC.swift

@@ -9,17 +9,9 @@ import UIKit
 import Combine
 
 open class TSBaseVC: UIViewController {
-  
-    public var closePageComplete:(()->Void)?
-    
+
     public var cancellable: [AnyCancellable] = []
-    
-    public var blurEffect: UIBlurEffect?
-    public lazy var navBlurView: UIVisualEffectView = {
-        let view = UIVisualEffectView()
-        return view
-    }()
-    
+
     public lazy var contentView: UIView = {
         let view = UIView()
         return view
@@ -37,24 +29,6 @@ open class TSBaseVC: UIViewController {
         return view
     }()
     
-    
-    public lazy var viewBgImageView: UIImageView = {
-        let view = UIImageView()
-        view.backgroundColor = .clear
-        return view
-    }()
-
-    public lazy var netWorkView: UIView = {
-        let view = UIView()
-        view.backgroundColor = .clear
-        return view
-    }()
-    
-    
-    public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
     required public init?(coder: NSCoder) {
         super.init(coder: coder)
     }
@@ -92,20 +66,6 @@ open class TSBaseVC: UIViewController {
         view.layoutIfNeeded()
     }
     
-    
-    
-    
-    public func setViewBgImageNamed(named:String){
-        if viewBgImageView.superview == nil {
-            view.insertSubview(viewBgImageView, at: 0)
-            viewBgImageView.snp.makeConstraints { make in
-                make.edges.equalToSuperview()
-            }
-        }
-        viewBgImageView.image = UIImage(named: named)
-    }
-    
-    
     //子类重写
     open func createData(){
         
@@ -137,7 +97,6 @@ open class TSBaseVC: UIViewController {
     deinit {
         NotificationCenter.default.removeObserver(self)
         cancellable.removeAll()
-        closePageComplete?()
         debugPrint("♻️♻️♻️ TGRootViewController -> \(type(of: self)) deinit ♻️♻️♻️")
     }
 
@@ -177,11 +136,6 @@ open class TSBaseVC: UIViewController {
         }
     }
 
-}
-
-
-extension TSBaseVC {
-    
     public func setNavBarViewHidden(_ isHidden: Bool) {
         navBarContentView.snp.updateConstraints { make in
             make.height.equalTo(isHidden ? 0 : k_Nav_Height)
@@ -196,29 +150,4 @@ extension TSBaseVC {
         return isViewLoaded && view.window != nil && presentedViewController == nil
     }
     
-    public func addPullDownClosePage() {
-        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handleDismissPan(_:)))
-        view.addGestureRecognizer(panGesture)
-    }
-
-    // 手势处理方法
-     @objc public func handleDismissPan(_ gesture: UIPanGestureRecognizer) {
-        let translation = gesture.translation(in: view)
-        let progress = translation.y / view.bounds.height
-        
-        switch gesture.state {
-        case .changed:
-            view.transform = CGAffineTransform(translationX: 0, y: max(0, translation.y))
-        case .ended:
-            if progress > 0.5 || gesture.velocity(in: view).y > 1000 {
-                dismiss(animated: true)
-            } else {
-                UIView.animate(withDuration: 0.3) {
-                    self.view.transform = .identity
-                }
-            }
-        default:
-            break
-        }
-    }
 }

+ 0 - 41
AIPlayRingtones/Classes/BaseClass/TSBaseView.swift

@@ -1,41 +0,0 @@
-//
-//  TSBaseView.swift
-//  TSLiveWallpaper
-//
-//  Created by 100Years on 2024/12/24.
-//
-
-open class TSBaseView : UIView {
-
-    public lazy var contentView:UIView = {
-        let view = UIView()
-        view.backgroundColor = .clear
-        return view
-    }()
-    
-    public override init(frame: CGRect) {
-        super.init(frame: frame)
-        self.backgroundColor = .clear
-        self.addSubview(contentView)
-        contentView.snp.makeConstraints { make in
-            make.top.leading.trailing.bottom.equalTo(0)
-        }
-        creatUI()
-        dealThings()
-    }
-    
-    required public init?(coder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-    
-    open func creatUI(){
-        
-    }
-    
-    
-    open func dealThings(){
-        
-        
-    }
-    
-}

+ 0 - 24
AIPlayRingtones/Classes/BaseClass/TSBaseViewModel.swift

@@ -1,24 +0,0 @@
-//
-//  TSBaseViewModel.swift
-//  AIEmoji
-//
-//  Created by 100Years on 2025/1/20.
-//
-
-open class TSBaseViewModel {
-    
-    public init() {
-        creatData()
-        dealThings()
-    }
-    
-    public func creatData () {
-        
-        
-    }
-    
-    public func dealThings () {
-        
-        
-    }
-}

+ 1 - 1
AIPlayRingtones/Classes/GlobalImports/GlobalImports.swift

@@ -116,7 +116,7 @@ public func kPresentModalVC(target:UIViewController,
                        style:UIModalPresentationStyle = .overFullScreen,
              transitionStyle:UIModalTransitionStyle = .coverVertical,
                   completion: (() -> Void)? = nil){
-    let navi = TSBaseNavigationC(rootViewController: modelVC)
+    let navi = ASBaseNavigationController(rootViewController: modelVC)
     navi.modalPresentationStyle = style
     navi.modalTransitionStyle = transitionStyle
     target.present(navi, animated: true,completion: completion)

+ 0 - 0
AIPlayRingtones/Classes/GlobalImports/GlobalImportsOC.h → AIPlayRingtones/Classes/GlobalImports/GlobalMacros.h


+ 21 - 0
AIPlayRingtones/Common/BaseClass/ASBaseCollectionCell.h

@@ -0,0 +1,21 @@
+//
+//  ASBaseCollectionCell.h
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+#import <UIKit/UIKit.h>
+#import "Masonry.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASBaseCollectionCell : UICollectionViewCell
+
+@property (nonatomic, strong) UIView *bgContentView;
+
+- (void)creatUI;
+- (void)dealThings;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 48 - 0
AIPlayRingtones/Common/BaseClass/ASBaseCollectionCell.m

@@ -0,0 +1,48 @@
+//
+//  ASBaseCollectionCell.m
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+#import "ASBaseCollectionCell.h"
+
+@implementation ASBaseCollectionCell
+
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self commonInit];
+    }
+    return self;
+}
+
+- (void)commonInit {
+    self.backgroundColor = [UIColor clearColor];
+    
+    _bgContentView = [[UIView alloc] init];
+    _bgContentView.backgroundColor = [UIColor clearColor];
+    [self.contentView addSubview:_bgContentView];
+    
+    [_bgContentView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self.contentView);
+    }];
+    
+    [self creatUI];
+    [self dealThings];
+}
+
+- (void)creatUI {
+    // 子类实现
+}
+
+- (void)dealThings {
+    // 子类实现
+}
+
+- (void)dealloc {
+    // NSLog(@"<---deinit %@", self);
+}
+
+@end

+ 20 - 0
AIPlayRingtones/Common/BaseClass/ASBaseCollectionReusableView.h

@@ -0,0 +1,20 @@
+//
+//  ASBaseCollectionReusableView.h
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+#import <UIKit/UIKit.h>
+#import "Masonry.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASBaseCollectionReusableView : UICollectionReusableView
+
+@property (nonatomic, strong) UIView *bgContentView;
+
+- (void)creatUI;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 43 - 0
AIPlayRingtones/Common/BaseClass/ASBaseCollectionReusableView.m

@@ -0,0 +1,43 @@
+//
+//  ASBaseCollectionReusableView.m
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+#import "ASBaseCollectionReusableView.h"
+
+@implementation ASBaseCollectionReusableView
+
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self commonInit];
+    }
+    return self;
+}
+
+- (void)commonInit {
+    self.backgroundColor = [UIColor clearColor];
+    
+    _bgContentView = [[UIView alloc] init];
+    _bgContentView.backgroundColor = [UIColor clearColor];
+    [self addSubview:_bgContentView];
+    
+    [_bgContentView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self);
+    }];
+    
+    [self creatUI];
+}
+
+- (void)creatUI {
+    // 子类实现
+}
+
+- (void)dealloc {
+    // NSLog(@"<---deinit %@", self);
+}
+
+@end

+ 28 - 0
AIPlayRingtones/Common/BaseClass/ASBaseModel.swift

@@ -0,0 +1,28 @@
+//
+//  ASBaseModel.swift
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+
+import ObjectMapper
+
+open class ASBaseModel: NSObject, Mappable, NSCopying {
+    
+    open func mapping(map: ObjectMapper.Map) {}
+    
+    open func copy(with zone: NSZone? = nil) -> Any {
+        return Self.init(JSON: toJSON()) ?? Self.init(JSON: [:])!
+    }
+    
+    required convenience public init?(map: ObjectMapper.Map) {
+        self.init()
+        mapping(map: map)
+    }
+    
+    required convenience public init?(json: [String: Any]) {
+        self.init(JSON: json)
+    }
+        
+}

+ 21 - 0
AIPlayRingtones/Common/BaseClass/ASBaseNavContentBarView.h

@@ -0,0 +1,21 @@
+//
+//  ASBaseNavContentBarView.h
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASBaseNavContentBarView : UIView
+
+@property (nonatomic, strong) UIView *statuView;
+@property (nonatomic, strong) UIView *barView;
+
+- (instancetype)initWithFrame:(CGRect)frame;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 37 - 0
AIPlayRingtones/Common/BaseClass/ASBaseNavContentBarView.m

@@ -0,0 +1,37 @@
+//
+//  ASBaseNavContentBarView.m
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+#import "ASBaseNavContentBarView.h"
+#import "Masonry.h"
+#import "GlobalMacros.h"
+@implementation ASBaseNavContentBarView
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        _statuView = [[UIView alloc] init];
+        _barView = [[UIView alloc] init];
+        
+        [self addSubview:_statuView];
+        [self addSubview:_barView];
+        
+        [_statuView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.leading.trailing.equalTo(@0);
+            make.height.equalTo(@(k_Height_StatusBar));
+        }];
+        
+        [_barView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.leading.trailing.equalTo(@0);
+            make.top.equalTo(_statuView.mas_bottom);
+            make.height.equalTo(@(k_Height_NavBar));
+        }];
+    }
+    return self;
+}
+
+
+@end

+ 0 - 0
AIPlayRingtones/Classes/BaseClass/ASBaseNavigationController.h → AIPlayRingtones/Common/BaseClass/ASBaseNavigationController.h


+ 0 - 0
AIPlayRingtones/Classes/BaseClass/ASBaseNavigationController.m → AIPlayRingtones/Common/BaseClass/ASBaseNavigationController.m


+ 0 - 0
AIPlayRingtones/Classes/BaseClass/ASBaseView.h → AIPlayRingtones/Common/BaseClass/ASBaseView.h


+ 0 - 0
AIPlayRingtones/Classes/BaseClass/ASBaseView.m → AIPlayRingtones/Common/BaseClass/ASBaseView.m


+ 32 - 0
AIPlayRingtones/Common/BaseClass/ASNormalNavigationBarView.h

@@ -0,0 +1,32 @@
+//
+//  ASNormalNavigationBarView.h
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+#import "ASBaseNavContentBarView.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASNormalNavigationBarView : ASBaseNavContentBarView
+
+@property (nonatomic, strong) UIColor *navBgColor;
+@property (nonatomic, strong) UIColor *navTitleColor;
+@property (nonatomic, strong) UIFont *navTitleFont;
+@property (nonatomic, strong) UIFont *navLeftFont;
+@property (nonatomic, strong) UIFont *navRightFont;
+
+@property (nonatomic, strong) UIButton *leftNavBtn;
+@property (nonatomic, strong) UIButton *titleNavBtn;
+@property (nonatomic, strong) UIButton *rightNavBtn;
+
+- (UIButton *)setTitleName:(NSString *)name;
+- (UIButton *)setTitleNavigationItemWithName:(NSString *)name imageName:(NSString *)imageName target:(id)target action:(SEL)action;
+- (UIButton *)setLeftNavigationItemWithName:(NSString *)name imageName:(NSString *)imageName target:(id)target action:(SEL)action;
+- (UIButton *)setRightNavigationItemWithName:(NSString *)name imageName:(NSString *)imageName target:(id)target action:(SEL)action;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 114 - 0
AIPlayRingtones/Common/BaseClass/ASNormalNavigationBarView.m

@@ -0,0 +1,114 @@
+//
+//  ASNormalNavigationBarView.m
+//  AIPlayRingtones
+//
+//  Created by mini on 2025/5/27.
+//
+
+#import "ASNormalNavigationBarView.h"
+#import "Masonry.h"
+#import "NSString+AS.h"
+#import "AIPlayRingtones-Swift.h"
+@implementation ASNormalNavigationBarView
+
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self createData];
+        [self createView];
+    }
+    return self;
+}
+
+- (void)createData {
+    self.navBgColor = [UIColor clearColor];
+    self.navTitleColor = @"#0E1550".uiColor;
+    self.navTitleFont = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium];
+    self.navLeftFont = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium];
+    self.navRightFont = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium];
+}
+
+- (void)createView {
+    CGFloat margins = 16;
+    
+    self.backgroundColor = self.navBgColor;
+    
+    _leftNavBtn = [self createNavButton];
+    _leftNavBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
+    _leftNavBtn.contentEdgeInsets = UIEdgeInsetsZero;
+    
+    _titleNavBtn = [self createNavButton];
+    _titleNavBtn.titleLabel.font = self.navTitleFont;
+    
+    _rightNavBtn = [self createNavButton];
+    _rightNavBtn.titleLabel.font = self.navRightFont;
+    _rightNavBtn.titleLabel.adjustsFontSizeToFitWidth = YES;
+    [_rightNavBtn setTitleColor:@"B48EFF".uiColor forState:UIControlStateNormal];
+    _rightNavBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
+    _rightNavBtn.contentEdgeInsets = UIEdgeInsetsZero;
+    
+    [self.barView addSubview:_leftNavBtn];
+    [self.barView addSubview:_titleNavBtn];
+    [self.barView addSubview:_rightNavBtn];
+    
+    [_leftNavBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.equalTo(@(margins));
+        make.centerY.equalTo(self.barView);
+        make.width.height.equalTo(@44);
+    }];
+    
+    [_rightNavBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.trailing.equalTo(@(-margins));
+        make.centerY.equalTo(self.barView);
+        make.width.height.equalTo(@44);
+    }];
+    
+    [_titleNavBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.equalTo(_leftNavBtn.mas_trailing).offset(margins);
+        make.trailing.equalTo(_rightNavBtn.mas_leading).offset(-margins);
+        make.centerY.equalTo(self.barView);
+        make.height.equalTo(@44);
+    }];
+}
+
+- (UIButton *)setTitleName:(NSString *)name {
+    [self.titleNavBtn setTitle:name forState:UIControlStateNormal];
+    return self.titleNavBtn;
+}
+
+- (UIButton *)setTitleNavigationItemWithName:(NSString *)name imageName:(NSString *)imageName target:(id)target action:(SEL)action {
+    return [self setNavButton:self.titleNavBtn name:name imageName:imageName target:target action:action];
+}
+
+- (UIButton *)setLeftNavigationItemWithName:(NSString *)name imageName:(NSString *)imageName target:(id)target action:(SEL)action {
+    return [self setNavButton:self.leftNavBtn name:name imageName:imageName target:target action:action];
+}
+
+- (UIButton *)setRightNavigationItemWithName:(NSString *)name imageName:(NSString *)imageName target:(id)target action:(SEL)action {
+    return [self setNavButton:self.rightNavBtn name:name imageName:imageName target:target action:action];
+}
+
+- (UIButton *)setNavButton:(UIButton *)button name:(NSString *)name imageName:(NSString *)imageName target:(id)target action:(SEL)action {
+    [button setTitle:name forState:UIControlStateNormal];
+    
+    if (imageName.length > 0) {
+        UIImage *image = [[UIImage imageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
+        if (image) {
+            [button setImage:image forState:UIControlStateNormal];
+        }
+    }
+    
+    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
+    return button;
+}
+
+- (UIButton *)createNavButton {
+    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
+    [button setTitleColor:self.navTitleColor forState:UIControlStateNormal];
+    button.titleLabel.font = self.navRightFont;
+    button.titleLabel.adjustsFontSizeToFitWidth = YES;
+    return button;
+}
+
+@end

+ 4 - 4
AIPlayRingtones/Common/TSNetWork/TSNetWork+Business.swift

@@ -69,7 +69,7 @@ func getLanguageCode()->String{
 extension TSNetworkManager {
     
     /// 通用 get 请求
-    func get<T: TSBaseModel>(
+    func get<T: ASBaseModel>(
         urlType: TSNeURLType,
         parameters: [String: Any]? = nil,
         responseType: T.Type? = nil,
@@ -93,7 +93,7 @@ extension TSNetworkManager {
     ///   - parameters: 请求参数
     ///   - responseType: 响应数据模型(可选)
     ///   - completion: 请求完成的回调
-    func post<T: TSBaseModel>(
+    func post<T: ASBaseModel>(
         urlType: TSNeURLType,
         parameters: [String: Any]? = nil,
         responseType: T.Type? = nil,
@@ -116,7 +116,7 @@ extension TSNetworkManager {
     ///   - parameters: 请求参数
     ///   - responseType: 响应数据模型(可选)
     ///   - completion: 请求完成的回调
-    func postStream<T: TSBaseModel>(
+    func postStream<T: ASBaseModel>(
         urlType: TSNeURLType,
         parameters: [String: Any]? = nil,
         responseType: T.Type? = nil,
@@ -136,7 +136,7 @@ extension TSNetworkManager {
     ///   - parameters: 其他参数(可选)
     ///   - headers: 自定义请求头(可选)
     ///   - completion: 完成回调,返回结果或错误
-    func uploadData<T: TSBaseModel>(
+    func uploadData<T: ASBaseModel>(
         urlType: TSNeURLType,
         dataArray: [[String: Any]], // Data 数组,每个元素包含 Data 和字段名
         parameters: [String: Any]? = nil,

+ 1 - 1
AIPlayRingtones/CommonView/ASGeneratorView/ASGeneratorErrorView.swift

@@ -5,7 +5,7 @@
 //  Created by 100Years on 2025/5/18.
 //
 
-class ASGeneratorErrorView: TSBaseView {
+class ASGeneratorErrorView: ASBaseView {
     
     var style:ASGeneratorView.Style = .generalError{
         didSet{

+ 1 - 1
AIPlayRingtones/CommonView/ASGeneratorView/ASGeneratorLoadingView.swift

@@ -7,7 +7,7 @@
 
 import Kingfisher
 
-class ASGeneratorLoadingView : TSBaseView {
+class ASGeneratorLoadingView : ASBaseView {
 
     
     var isShowBackGeneration:Bool = false {

+ 1 - 1
AIPlayRingtones/CommonView/ASGeneratorView/ASGeneratorView.swift

@@ -9,7 +9,7 @@
 
 let kTextLeading = 24.0
 
-class ASGeneratorView: TSBaseView {
+class ASGeneratorView: ASBaseView {
     
     enum Style {
         case loading    //loading

+ 1 - 1
AIPlayRingtones/CommonView/ASPageNullView.swift

@@ -5,7 +5,7 @@
 //  Created by mini on 2025/5/19.
 //
 
-class ASPageNullView: TSBaseView {
+class ASPageNullView: ASBaseView {
 
     lazy var imageView: UIImageView = {
         return UIImageView.createImageView(imageName: "pageNull")

+ 1 - 1
AIPlayRingtones/CommonView/ASRingLoadingView.swift

@@ -8,7 +8,7 @@
 
 import Kingfisher
 
-class ASRingLoadingView: TSBaseView {
+class ASRingLoadingView: ASBaseView {
     
     static let shared = ASRingLoadingView(frame: CGRectMake(0, 0, k_ScreenWidth, k_ScreenHeight))
     

+ 3 - 3
AIPlayRingtones/CommonView/ASRingToneCellView.swift

@@ -6,7 +6,7 @@
 //
 
 
-class ASRingToneCellView: TSBaseView {
+class ASRingToneCellView: ASBaseView {
     
     var clickPlayHandel:((Bool)->Void)?
     var isSelectedChangeColor:Bool = true //选中是否改变颜色
@@ -227,7 +227,7 @@ extension ASRingToneCellView {
 }
 
 
-class TSRingToneGenerateView:TSBaseView {
+class TSRingToneGenerateView:ASBaseView {
     
     
     var refreshHandel:(()->Void)?
@@ -344,7 +344,7 @@ class TSRingToneGenerateView:TSBaseView {
 }
 
 
-class TSRingProgressView:TSBaseView {
+class TSRingProgressView:ASBaseView {
     
     lazy var generateProgressView: UIImageView = {
         let generateProgressView = UIImageView.createImageView(imageName: "cell_ring_progress",contentMode: .scaleToFill)

+ 3 - 3
AIPlayRingtones/Data/ASActionInfoModel.swift

@@ -6,7 +6,7 @@
 //
 
 import ObjectMapper
-class ASActionInfoModel: TSBaseModel {
+class ASActionInfoModel: ASBaseModel {
     
     enum ModelType:Int {
         case normal = 0
@@ -99,7 +99,7 @@ extension ASActionInfoModel {
     
 }
 
-class ASActionRequestModel : TSBaseModel {
+class ASActionRequestModel : ASBaseModel {
 
     var width:Int = 0
     var height:Int = 0
@@ -122,7 +122,7 @@ class ASActionRequestModel : TSBaseModel {
     }
 }
 
-class ASActionResponseModel : TSBaseModel {
+class ASActionResponseModel : ASBaseModel {
     var code:Int = 0
     var vip:Bool = false