Browse Source

调音器UI

Steven 2 years ago
parent
commit
7f871cdb41
81 changed files with 1290 additions and 319 deletions
  1. 71 1
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 1 1
      KulexiuForStudent/KulexiuForStudent.xcodeproj/xcshareddata/xcschemes/KulexiuForStudent.xcscheme
  3. 14 0
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcshareddata/swiftpm/Package.resolved
  4. BIN
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  5. 1 1
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/WorkspaceSettings.xcsettings
  6. 6 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/Contents.json
  7. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/forkButton_bg.imageset/Contents.json
  8. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/forkButton_bg.imageset/forkButton_bg@2x.png
  9. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/forkButton_bg.imageset/forkButton_bg@3x.png
  10. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_choose.imageset/Contents.json
  11. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_choose.imageset/fork_choose@2x.png
  12. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_choose.imageset/fork_choose@3x.png
  13. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_play.imageset/Contents.json
  14. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_play.imageset/fork_play@2x.png
  15. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_play.imageset/fork_play@3x.png
  16. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unPlay.imageset/Contents.json
  17. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unPlay.imageset/fork_unPlay@2x.png
  18. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unPlay.imageset/fork_unPlay@3x.png
  19. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unchoose.imageset/Contents.json
  20. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unchoose.imageset/fork_unchoose@2x.png
  21. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unchoose.imageset/fork_unchoose@3x.png
  22. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/freguqnce_add.imageset/Contents.json
  23. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/freguqnce_add.imageset/freguqnce_add@2x.png
  24. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/freguqnce_add.imageset/freguqnce_add@3x.png
  25. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/frequence_minus.imageset/Contents.json
  26. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/frequence_minus.imageset/frequence_minus@2x.png
  27. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/frequence_minus.imageset/frequence_minus@3x.png
  28. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/plate_bg.imageset/Contents.json
  29. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/plate_bg.imageset/plate_bg@2x.png
  30. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/plate_bg.imageset/plate_bg@3x.png
  31. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/playButton_bg.imageset/Contents.json
  32. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/playButton_bg.imageset/playButton_bg@2x.png
  33. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/playButton_bg.imageset/playButton_bg@3x.png
  34. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/toning_bottom.imageset/Contents.json
  35. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/toning_bottom.imageset/toning_bottom@2x.png
  36. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/toning_bottom.imageset/toning_bottom@3x.png
  37. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_decorate.imageset/Contents.json
  38. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_decorate.imageset/tuning_decorate@2x.png
  39. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_decorate.imageset/tuning_decorate@3x.png
  40. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_warning.imageset/Contents.json
  41. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_warning.imageset/tuning_warning@2x.png
  42. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_warning.imageset/tuning_warning@3x.png
  43. 14 14
      KulexiuForStudent/KulexiuForStudent/Common/Define/PrefixHeader.pch
  44. 83 4
      KulexiuForStudent/KulexiuForStudent/Module/Widget/Controller/ToneTuningViewController.m
  45. 4 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/Model/TuningFunction/KulexiuForStudent-Bridging-Header.h
  46. 214 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/Model/TuningFunction/Tuner.swift
  47. 24 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.h
  48. 70 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.m
  49. 238 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.xib
  50. 1 1
      KulexiuForStudent/Podfile
  51. 1 1
      KulexiuForStudent/Podfile.lock
  52. 1 1
      KulexiuForStudent/Pods/Manifest.lock
  53. 255 267
      KulexiuForStudent/Pods/Pods.xcodeproj/project.pbxproj
  54. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/AFNetworking.xcscheme
  55. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Bugly.xcscheme
  56. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/CHIPageControl.xcscheme
  57. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/IQKeyboardManager.xcscheme
  58. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/JCore.xcscheme
  59. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/JPush.xcscheme
  60. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/JXCategoryView.xcscheme
  61. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/JXPagingView.xcscheme
  62. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/MBProgressHUD.xcscheme
  63. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/MJExtension.xcscheme
  64. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/MJRefresh.xcscheme
  65. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Masonry.xcscheme
  66. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Pods-KulexiuForStudent-KulexiuForStudentUITests.xcscheme
  67. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Pods-KulexiuForStudent.xcscheme
  68. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Pods-KulexiuForStudentTests.xcscheme
  69. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/RSKImageCropper.xcscheme
  70. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Reachability.xcscheme
  71. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/RongCloudIM.xcscheme
  72. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/RongCloudRTC.xcscheme
  73. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/SDWebImage.xcscheme
  74. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/SSZipArchive.xcscheme
  75. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/SocketRocket.xcscheme
  76. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Whiteboard-Whiteboard.xcscheme
  77. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Whiteboard.xcscheme
  78. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/YYModel.xcscheme
  79. 1 1
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/ZKCycleScrollView.xcscheme
  80. 1 1
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent.debug.xcconfig
  81. 1 1
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent.release.xcconfig

+ 71 - 1
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -868,6 +868,9 @@
 		BCD457AB286469600010B493 /* PublicNoticeView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCD457A92864695F0010B493 /* PublicNoticeView.m */; };
 		BCD457AC286469600010B493 /* PublicNoticeView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCD457AA286469600010B493 /* PublicNoticeView.xib */; };
 		BCD457AF28646B580010B493 /* NoticeSourceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCD457AE28646B580010B493 /* NoticeSourceModel.m */; };
+		BCD9294F28F8FCA4006793E4 /* AudioKit in Frameworks */ = {isa = PBXBuildFile; productRef = BCD9294E28F8FCA4006793E4 /* AudioKit */; };
+		BCD9295228F90202006793E4 /* ToneTuningBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCD9295128F90202006793E4 /* ToneTuningBodyView.m */; };
+		BCD9295428F90209006793E4 /* ToneTuningBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCD9295328F90209006793E4 /* ToneTuningBodyView.xib */; };
 		BCD959C928DB071B00B70314 /* MusicTagView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCD959C828DB071B00B70314 /* MusicTagView.m */; };
 		BCD959CC28DB0BAB00B70314 /* KSImageShareViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCD959CB28DB0BAB00B70314 /* KSImageShareViewController.m */; };
 		BCDE35862893B0E200A9A560 /* KSLoadingSuccessView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDE35852893B0E200A9A560 /* KSLoadingSuccessView.m */; };
@@ -940,6 +943,7 @@
 		BCFEED6F28F7E95A0078A2B7 /* ToneTuningViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFEED6E28F7E95A0078A2B7 /* ToneTuningViewController.m */; };
 		BCFEED7328F7F17C0078A2B7 /* TuningNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFEED7228F7F17C0078A2B7 /* TuningNavView.m */; };
 		BCFEED7528F7F1820078A2B7 /* TuningNavView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCFEED7428F7F1820078A2B7 /* TuningNavView.xib */; };
+		BCFEED7C28F810D70078A2B7 /* Tuner.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCFEED7B28F810D70078A2B7 /* Tuner.swift */; };
 		C56C141D9D9D478077F14C1E /* Pods_KulexiuForStudent_KulexiuForStudentUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9C170A749B6C49F17AC3246 /* Pods_KulexiuForStudent_KulexiuForStudentUITests.framework */; };
 /* End PBXBuildFile section */
 
@@ -2437,6 +2441,9 @@
 		BCD457AA286469600010B493 /* PublicNoticeView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PublicNoticeView.xib; sourceTree = "<group>"; };
 		BCD457AD28646B580010B493 /* NoticeSourceModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoticeSourceModel.h; sourceTree = "<group>"; };
 		BCD457AE28646B580010B493 /* NoticeSourceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoticeSourceModel.m; sourceTree = "<group>"; };
+		BCD9295028F90202006793E4 /* ToneTuningBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ToneTuningBodyView.h; sourceTree = "<group>"; };
+		BCD9295128F90202006793E4 /* ToneTuningBodyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ToneTuningBodyView.m; sourceTree = "<group>"; };
+		BCD9295328F90209006793E4 /* ToneTuningBodyView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ToneTuningBodyView.xib; sourceTree = "<group>"; };
 		BCD959C728DB071B00B70314 /* MusicTagView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MusicTagView.h; sourceTree = "<group>"; };
 		BCD959C828DB071B00B70314 /* MusicTagView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MusicTagView.m; sourceTree = "<group>"; };
 		BCD959CA28DB0BAB00B70314 /* KSImageShareViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSImageShareViewController.h; sourceTree = "<group>"; };
@@ -2544,6 +2551,8 @@
 		BCFEED7128F7F17C0078A2B7 /* TuningNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TuningNavView.h; sourceTree = "<group>"; };
 		BCFEED7228F7F17C0078A2B7 /* TuningNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TuningNavView.m; sourceTree = "<group>"; };
 		BCFEED7428F7F1820078A2B7 /* TuningNavView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TuningNavView.xib; sourceTree = "<group>"; };
+		BCFEED7A28F810D60078A2B7 /* KulexiuForStudent-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "KulexiuForStudent-Bridging-Header.h"; sourceTree = "<group>"; };
+		BCFEED7B28F810D70078A2B7 /* Tuner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tuner.swift; sourceTree = "<group>"; };
 		C9C170A749B6C49F17AC3246 /* Pods_KulexiuForStudent_KulexiuForStudentUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KulexiuForStudent_KulexiuForStudentUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		D5D730A1D1EC18E5028F1AD7 /* Pods-KulexiuForStudent-KulexiuForStudentUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KulexiuForStudent-KulexiuForStudentUITests.release.xcconfig"; path = "Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests.release.xcconfig"; sourceTree = "<group>"; };
 		DD4D637EF600D0BAE869423D /* Pods_KulexiuForStudentTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KulexiuForStudentTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -2558,6 +2567,7 @@
 				BCA1136828A3A5CF007FAFB9 /* Accelerate.framework in Frameworks */,
 				BC8B6E152856E20800866917 /* WebKit.framework in Frameworks */,
 				BC8A45CB283DDEA100094BBB /* AVFoundation.framework in Frameworks */,
+				BCD9294F28F8FCA4006793E4 /* AudioKit in Frameworks */,
 				BC71D1042881A2420010F14B /* libSocialQQ.a in Frameworks */,
 				BC71D0FC2881A2420010F14B /* UMShare.framework in Frameworks */,
 				BC71D0F92881A2420010F14B /* UMDevice.framework in Frameworks */,
@@ -4536,6 +4546,7 @@
 		BC4CF28A28D058FB00961C61 /* Model */ = {
 			isa = PBXGroup;
 			children = (
+				BCFEED7628F7FD620078A2B7 /* TuningFunction */,
 				BC49BAEA28D98C500031FF06 /* KSMetronomePlayer.h */,
 				BC49BAEB28D98C500031FF06 /* KSMetronomePlayer.m */,
 			);
@@ -6105,10 +6116,22 @@
 				BCFEED7128F7F17C0078A2B7 /* TuningNavView.h */,
 				BCFEED7228F7F17C0078A2B7 /* TuningNavView.m */,
 				BCFEED7428F7F1820078A2B7 /* TuningNavView.xib */,
+				BCD9295028F90202006793E4 /* ToneTuningBodyView.h */,
+				BCD9295128F90202006793E4 /* ToneTuningBodyView.m */,
+				BCD9295328F90209006793E4 /* ToneTuningBodyView.xib */,
 			);
 			path = toneTuning;
 			sourceTree = "<group>";
 		};
+		BCFEED7628F7FD620078A2B7 /* TuningFunction */ = {
+			isa = PBXGroup;
+			children = (
+				BCFEED7B28F810D70078A2B7 /* Tuner.swift */,
+				BCFEED7A28F810D60078A2B7 /* KulexiuForStudent-Bridging-Header.h */,
+			);
+			path = TuningFunction;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
@@ -6128,6 +6151,9 @@
 			dependencies = (
 			);
 			name = KulexiuForStudent;
+			packageProductDependencies = (
+				BCD9294E28F8FCA4006793E4 /* AudioKit */,
+			);
 			productName = KulexiuForStudent;
 			productReference = 275E8AA527E18F8800DD3F6E /* KulexiuForStudent.app */;
 			productType = "com.apple.product-type.application";
@@ -6179,10 +6205,11 @@
 			isa = PBXProject;
 			attributes = {
 				BuildIndependentTargetsInParallel = 1;
-				LastUpgradeCheck = 1320;
+				LastUpgradeCheck = 1400;
 				TargetAttributes = {
 					275E8AA427E18F8800DD3F6E = {
 						CreatedOnToolsVersion = 13.2.1;
+						LastSwiftMigration = 1400;
 					};
 					275E8ABF27E18F8C00DD3F6E = {
 						CreatedOnToolsVersion = 13.2.1;
@@ -6204,6 +6231,9 @@
 				"zh-Hans",
 			);
 			mainGroup = 275E8A9C27E18F8800DD3F6E;
+			packageReferences = (
+				BCD9294D28F8FCA4006793E4 /* XCRemoteSwiftPackageReference "AudioKit" */,
+			);
 			productRefGroup = 275E8AA627E18F8800DD3F6E /* Products */;
 			projectDirPath = "";
 			projectRoot = "";
@@ -6443,6 +6473,7 @@
 				BC11921B280ED6A900A716F7 /* NewClassPopCell.xib in Resources */,
 				BCC583BF28A9EC6400BAB4CF /* cloud_animation_18.png in Resources */,
 				BC8B641728F3B5B300A08D16 /* KSAwardAlertView.xib in Resources */,
+				BCD9295428F90209006793E4 /* ToneTuningBodyView.xib in Resources */,
 				BC71D265288804CD0010F14B /* img_55.png in Resources */,
 				BC71D0FA2881A2420010F14B /* UMSocialSDKResources.bundle in Resources */,
 				BC60E3D2287D592800B05441 /* KSPublicAlertView.xib in Resources */,
@@ -7009,6 +7040,7 @@
 				277935A227E324A80010E277 /* TZLocationManager.m in Sources */,
 				BCDE35862893B0E200A9A560 /* KSLoadingSuccessView.m in Sources */,
 				2723B62827F157D500E0B90B /* KSSelectConversationViewController.m in Sources */,
+				BCD9295228F90202006793E4 /* ToneTuningBodyView.m in Sources */,
 				BC0A2265284471300065C1AB /* KSLiveBlockUser.m in Sources */,
 				275FA1E827E7351900CFEA2E /* CustomNavViewController.m in Sources */,
 				BC8A45B5283DC33400094BBB /* EvaluateResultAlert.m in Sources */,
@@ -7016,6 +7048,7 @@
 				275FA24327E73DF600CFEA2E /* InstrumentDescView.m in Sources */,
 				2723B68027F15D3D00E0B90B /* FeedbackViewController.m in Sources */,
 				275FA1ED27E7351900CFEA2E /* KSUpdateManager.m in Sources */,
+				BCFEED7C28F810D70078A2B7 /* Tuner.swift in Sources */,
 				BC27A06F280FF56C00F91E27 /* AccompanyStudentEvaCell.m in Sources */,
 				BCB6355727F6D2A300ACFDCF /* HTTPResult.m in Sources */,
 				BC0212FB27FC61D30040569F /* KSSegmentControl.m in Sources */,
@@ -7352,6 +7385,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_ANALYZER_NONNULL = YES;
 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
@@ -7411,6 +7445,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_ANALYZER_NONNULL = YES;
 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
@@ -7456,6 +7491,7 @@
 				MTL_ENABLE_DEBUG_INFO = NO;
 				MTL_FAST_MATH = YES;
 				SDKROOT = iphoneos;
+				SWIFT_COMPILATION_MODE = wholemodule;
 				VALIDATE_PRODUCT = YES;
 			};
 			name = Release;
@@ -7466,9 +7502,11 @@
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = KulexiuForStudent/KulexiuForStudent.entitlements;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1.3.9;
+				DEFINES_MODULE = NO;
 				DEVELOPMENT_TEAM = B2AP53HHTU;
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -7528,7 +7566,11 @@
 				PRODUCT_BUNDLE_IDENTIFIER = com.Colexiu.KulexiuForStudent;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_EMIT_LOC_STRINGS = YES;
+				SWIFT_OBJC_BRIDGING_HEADER = "KulexiuForStudent/Module/Widget/Model/TuningFunction/KulexiuForStudent-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
+				USER_HEADER_SEARCH_PATHS = "";
 			};
 			name = Debug;
 		};
@@ -7538,9 +7580,11 @@
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = KulexiuForStudent/KulexiuForStudent.entitlements;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1.3.9;
+				DEFINES_MODULE = NO;
 				DEVELOPMENT_TEAM = B2AP53HHTU;
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -7600,7 +7644,10 @@
 				PRODUCT_BUNDLE_IDENTIFIER = com.Colexiu.KulexiuForStudent;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_EMIT_LOC_STRINGS = YES;
+				SWIFT_OBJC_BRIDGING_HEADER = "KulexiuForStudent/Module/Widget/Model/TuningFunction/KulexiuForStudent-Bridging-Header.h";
+				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
+				USER_HEADER_SEARCH_PATHS = "";
 			};
 			name = Release;
 		};
@@ -7608,6 +7655,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 25A92766B52F3FB4AFA45A9B /* Pods-KulexiuForStudentTests.debug.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
@@ -7627,6 +7675,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = ED3E62A50E433BC13E633D1C /* Pods-KulexiuForStudentTests.release.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
@@ -7646,6 +7695,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 04AE318E8988C2AC148D551B /* Pods-KulexiuForStudent-KulexiuForStudentUITests.debug.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = P664H7S5LL;
@@ -7663,6 +7713,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = D5D730A1D1EC18E5028F1AD7 /* Pods-KulexiuForStudent-KulexiuForStudentUITests.release.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = P664H7S5LL;
@@ -7716,6 +7767,25 @@
 			defaultConfigurationName = Release;
 		};
 /* End XCConfigurationList section */
+
+/* Begin XCRemoteSwiftPackageReference section */
+		BCD9294D28F8FCA4006793E4 /* XCRemoteSwiftPackageReference "AudioKit" */ = {
+			isa = XCRemoteSwiftPackageReference;
+			repositoryURL = "https://github.com/AudioKit/AudioKit.git";
+			requirement = {
+				kind = exactVersion;
+				version = 5.0.0;
+			};
+		};
+/* End XCRemoteSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+		BCD9294E28F8FCA4006793E4 /* AudioKit */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = BCD9294D28F8FCA4006793E4 /* XCRemoteSwiftPackageReference "AudioKit" */;
+			productName = AudioKit;
+		};
+/* End XCSwiftPackageProductDependency section */
 	};
 	rootObject = 275E8A9D27E18F8800DD3F6E /* Project object */;
 }

+ 1 - 1
KulexiuForStudent/KulexiuForStudent.xcodeproj/xcshareddata/xcschemes/KulexiuForStudent.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1330"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 14 - 0
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcshareddata/swiftpm/Package.resolved

@@ -0,0 +1,14 @@
+{
+  "pins" : [
+    {
+      "identity" : "audiokit",
+      "kind" : "remoteSourceControl",
+      "location" : "https://github.com/AudioKit/AudioKit.git",
+      "state" : {
+        "revision" : "36ea09c87bf703291a60e694742d56ff221c56ae",
+        "version" : "5.0.0"
+      }
+    }
+  ],
+  "version" : 2
+}

BIN
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate


+ 1 - 1
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/WorkspaceSettings.xcsettings

@@ -3,7 +3,7 @@
 <plist version="1.0">
 <dict>
 	<key>BuildLocationStyle</key>
-	<string>UseTargetSettings</string>
+	<string>UseAppPreferences</string>
 	<key>CustomBuildLocationType</key>
 	<string>RelativeToDerivedData</string>
 	<key>DerivedDataLocationStyle</key>

+ 6 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/Contents.json

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

+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/forkButton_bg.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/forkButton_bg.imageset/forkButton_bg@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/forkButton_bg.imageset/forkButton_bg@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_choose.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_choose.imageset/fork_choose@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_choose.imageset/fork_choose@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_play.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_play.imageset/fork_play@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_play.imageset/fork_play@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unPlay.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unPlay.imageset/fork_unPlay@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unPlay.imageset/fork_unPlay@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unchoose.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unchoose.imageset/fork_unchoose@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_unchoose.imageset/fork_unchoose@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/freguqnce_add.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/freguqnce_add.imageset/freguqnce_add@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/freguqnce_add.imageset/freguqnce_add@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/frequence_minus.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/frequence_minus.imageset/frequence_minus@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/frequence_minus.imageset/frequence_minus@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/plate_bg.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/plate_bg.imageset/plate_bg@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/plate_bg.imageset/plate_bg@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/playButton_bg.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/playButton_bg.imageset/playButton_bg@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/playButton_bg.imageset/playButton_bg@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/toning_bottom.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/toning_bottom.imageset/toning_bottom@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/toning_bottom.imageset/toning_bottom@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_decorate.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_decorate.imageset/tuning_decorate@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_decorate.imageset/tuning_decorate@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_warning.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_warning.imageset/tuning_warning@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_warning.imageset/tuning_warning@3x.png


+ 14 - 14
KulexiuForStudent/KulexiuForStudent/Common/Define/PrefixHeader.pch

@@ -139,23 +139,23 @@ shouldPrevent = NO; \
 
 //#ifdef DEBUG
 
-#define hostURL (@"https://dev.colexiu.com")
-#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
-#define WEBHOST (@"https://dev.colexiu.com/student")
-#define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
-#define JSPUSH_ENVIRONMENT (NO)
-#define RCIM_KEY (@"0vnjpoad0jbdz")
-#define SUBMIT_UUID (YES)
+//#define hostURL (@"https://dev.colexiu.com")
+//#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
+//#define WEBHOST (@"https://dev.colexiu.com/student")
+//#define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
+//#define JSPUSH_ENVIRONMENT (NO)
+//#define RCIM_KEY (@"0vnjpoad0jbdz")
+//#define SUBMIT_UUID (YES)
 
 // 预生产环境
 
-//#define hostURL (@"https://ponline.colexiu.com")
-//#define SEALCLASSHOST (@"https://ponline.colexiu.com/api-classroom")
-//#define WEBHOST (@"https://ponline.colexiu.com/student")
-//#define SOCKET_URL (@"wss://ponline.colexiu.com/audioAnalysis")
-//#define JSPUSH_ENVIRONMENT (YES)
-//#define RCIM_KEY (@"e5t4ouvpe42pa")
-//#define SUBMIT_UUID (YES)
+#define hostURL (@"https://ponline.colexiu.com")
+#define SEALCLASSHOST (@"https://ponline.colexiu.com/api-classroom")
+#define WEBHOST (@"https://ponline.colexiu.com/student")
+#define SOCKET_URL (@"wss://ponline.colexiu.com/audioAnalysis")
+#define JSPUSH_ENVIRONMENT (YES)
+#define RCIM_KEY (@"e5t4ouvpe42pa")
+#define SUBMIT_UUID (YES)
 
 //#else
 

+ 83 - 4
KulexiuForStudent/KulexiuForStudent/Module/Widget/Controller/ToneTuningViewController.m

@@ -7,11 +7,20 @@
 
 #import "ToneTuningViewController.h"
 #import "TuningNavView.h"
+#import "KulexiuForStudent-swift.h"
+#import "ToneTuningBodyView.h"
 
-@interface ToneTuningViewController ()
+@interface ToneTuningViewController ()<TunerDelegate>
 
 @property (nonatomic, strong) TuningNavView *navView;
 
+@property (nonatomic, assign) BOOL isRuning;
+
+@property (nonatomic, strong) Tuner *tuner;
+
+
+@property (nonatomic, strong) ToneTuningBodyView *bodyView;
+
 @end
 
 @implementation ToneTuningViewController
@@ -25,14 +34,56 @@
 
 - (void)configUI {
     [self.scrollView removeFromSuperview];
-    CAGradientLayer *layer = [self createGradientLayerFromColor:HexRGB(0x1D2027) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x17181C) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, KPortraitWidth - 32, 114)];
+    CAGradientLayer *layer = [self createGradientLayerFromColor:HexRGB(0x1D2027) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x17181C) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, KPortraitWidth, KPortraitHeight)];
     layer.cornerRadius = 14.0f;
     layer.masksToBounds = YES;
     [self.view.layer addSublayer:layer];
     
     [self.view addSubview:self.navView];
-    
-    
+    [self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.mas_equalTo(self.view);
+        make.height.mas_equalTo(kNaviBarHeight);
+    }];
+//    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
+//    button.frame = CGRectMake(100, 100, 100, 100);
+//    [button setTitle:@"Start" forState:UIControlStateNormal];
+//    [button setBackgroundColor:HexRGB(0xffffff)];
+//    [self.view addSubview:button];
+//    [button addTarget:self action:@selector(clickAction:) forControlEvents:UIControlEventTouchUpInside];
+    [self.view addSubview:self.bodyView];
+    [self.bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.mas_equalTo(self.view);
+        make.top.mas_equalTo(self.navView.mas_bottom);
+        make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin);
+    }];
+}
+
+
+
+
+- (void)clickAction:(UIButton *)sender {
+    if (self.isRuning) {
+        [sender setTitle:@"Stop" forState:UIControlStateNormal];
+        [self stopTuner];
+    }
+    else {
+        [sender setTitle:@"Start" forState:UIControlStateNormal];
+        [self startTuner];
+    }
+}
+
+- (void)startTuner {
+    if (self.isRuning == NO) {
+        self.isRuning = YES;
+        [self.tuner start];
+    }
+}
+
+- (void)stopTuner {
+    if (self.isRuning) {
+        self.isRuning = NO;
+        [self.tuner stop];
+    }
 }
 
 - (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
@@ -65,6 +116,34 @@
     
 }
 
+- (Tuner *)tuner {
+    if (!_tuner) {
+        _tuner = [[Tuner alloc] initWithThreshold:0 smoothing:0.25];
+        _tuner.delegate = self;
+    }
+    return _tuner;
+}
+
+- (void)tunerDidUpdate:(Tuner *)tuner output:(TunerOutput *)output {
+    if (output.amplitude < 0.01) {
+        
+    }
+    else {
+        
+    }
+    NSLog(@"-------- %@%zd --- distance :%f" , output.pitch, output.octave, output.distance);
+    
+}
+
+#pragma mark ---- lazying
+- (ToneTuningBodyView *)bodyView {
+    if (!_bodyView) {
+        _bodyView = [ToneTuningBodyView shareInstance];
+        MJWeakSelf;
+        
+    }
+    return _bodyView;
+}
 /*
 #pragma mark - Navigation
 

+ 4 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/Model/TuningFunction/KulexiuForStudent-Bridging-Header.h

@@ -0,0 +1,4 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+

+ 214 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/Model/TuningFunction/Tuner.swift

@@ -0,0 +1,214 @@
+//
+//  Tuner.swift
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/13.
+//
+
+import Foundation
+import AudioKit
+
+
+private let flats = ["C", "D♭","D","E♭","E","F","G♭","G","A♭","A","B♭","B"]
+private let sharps = ["C", "C♯","D","D♯","E","F","F♯","G","G♯","A","A♯","B"]
+private let frequencies: [Float] = [
+    16.35, 17.32, 18.35, 19.45, 20.60, 21.83, 23.12, 24.50, 25.96, 27.50, 29.14, 30.87, // 0
+    32.70, 34.65, 36.71, 38.89, 41.20, 43.65, 46.25, 49.00, 51.91, 55.00, 58.27, 61.74, // 1
+    65.41, 69.30, 73.42, 77.78, 82.41, 87.31, 92.50, 98.00, 103.8, 110.0, 116.5, 123.5, // 2
+    130.8, 138.6, 146.8, 155.6, 164.8, 174.6, 185.0, 196.0, 207.7, 220.0, 233.1, 246.9, // 3
+    261.6, 277.2, 293.7, 311.1, 329.6, 349.2, 370.0, 392.0, 415.3, 440.0, 466.2, 493.9, // 4
+    523.3, 554.4, 587.3, 622.3, 659.3, 698.5, 740.0, 784.0, 830.6, 880.0, 932.3, 987.8, // 5
+    1047, 1109, 1175, 1245, 1319, 1397, 1480, 1568, 1661, 1760, 1865, 1976,             // 6
+    2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951,             // 7
+    4186, 4435, 4699, 4978, 5274, 5588, 5920, 6272, 6645, 7040, 7459, 7902              // 8
+]
+
+/**
+ Types adopting the TunerDelegate protocol act as callbacks for Tuners and are
+ the mechanism by which you may receive and respond to new information decoded
+ by a Tuner.
+ */
+@objc public protocol TunerDelegate {
+    
+    /**
+     Called by a Tuner on each update.
+     
+     - parameter tuner: Tuner that performed the update.
+     - parameter output: Contains information decoded by the Tuner.
+     */
+    func tunerDidUpdate(_ tuner: Tuner, output: TunerOutput)
+}
+
+// MARK:- TunerOutput
+/**
+ Contains information decoded by a Tuner, such as frequency, octave, pitch, etc.
+ */
+@objc public class TunerOutput: NSObject {
+    
+    /**
+     The octave of the interpreted pitch.
+     */
+    @objc public fileprivate(set) var octave: Int = 0
+    
+    /**
+     The interpreted pitch of the microphone audio.
+     */
+    @objc public fileprivate(set) var pitch: String = ""
+    
+    /**
+     The difference between the frequency of the interpreted pitch and the actual
+     frequency of the microphone audio.
+     
+     For example if the microphone audio has a frequency of 432Hz, the pitch will
+     be interpreted as A4 (440Hz), thus making the distance -8Hz.
+     */
+    @objc public fileprivate(set) var distance: Float = 0.0
+    
+    /**
+     The amplitude of the microphone audio.
+     */
+    @objc public fileprivate(set) var amplitude: Float = 0.0
+    
+    /**
+     The frequency of the microphone audio.
+     */
+    @objc public fileprivate(set) var frequency: Float = 0.0
+    
+    fileprivate override init() {}
+}
+
+
+/**
+ A Tuner uses the devices microphone and interprets the frequency, pitch, etc.
+ */
+@objc public class Tuner: NSObject {
+    
+    fileprivate let smoothingBufferCount = 30
+    
+    fileprivate let threshold: Float
+    fileprivate let smoothing: Float
+    fileprivate var engine: AudioEngine?
+    fileprivate var microphone: AudioEngine.InputNode?
+    fileprivate var pitchTap: PitchTap?
+    fileprivate var silence: Fader?
+    fileprivate var smoothingBuffer: [Float] = []
+    
+    /**
+     Object adopting the TunerDelegate protocol that should receive callbacks
+     from this tuner.
+     */
+    @objc public var delegate: TunerDelegate?
+    
+    /**
+     Initializes a new Tuner.
+     
+     - parameter threshold: The minimum amplitude to recognize, 0 < threshold < 1
+     - parameter smoothing: Exponential smoothing factor, 0 < smoothing < 1
+     
+     */
+    @objc public init(threshold: Float = 0.0, smoothing: Float = 0.25) {
+        self.threshold = Float(min(abs(threshold), 1.0))
+        self.smoothing = Float(min(abs(smoothing), 1.0))
+        
+    }
+    
+    /**
+     Starts the tuner.
+     */
+    @objc public func start() {
+        engine = AudioEngine()
+        microphone = engine!.input
+        silence = Fader(microphone!, gain: 0)
+        /**
+         调大bufferSize ,可以降低采样频率
+         16384 (10次/秒)
+         8192 (20次/秒)
+         4096 (40次/秒)  def
+         */
+        pitchTap = PitchTap(microphone!, bufferSize: 4096, handler: tap_handler)
+        microphone!.start()
+        pitchTap!.start()
+        engine!.output = silence
+        try? engine!.start()
+        
+    }
+    
+    /**
+     Stops the tuner.
+     */
+    @objc public func stop() {
+        microphone!.stop()
+        pitchTap!.stop()
+        engine!.stop()
+    }
+    
+    func tap_handler(freq: [Float], amp: [Float]) -> Void {
+#if DEBUG
+        print("freq -- real_\(freq[0]) -- imag_\(freq[1])" )
+        print("amp -- real_\(amp[0]) -- imag_\(amp[1])")
+#endif
+        if let d = self.delegate {
+            if amp[0] > self.threshold
+            {
+                let amplitude = amp[0]
+                let frequency = freq[0]
+                let output = Tuner.newOutput(frequency, amplitude)
+                DispatchQueue.main.async {
+                    d.tunerDidUpdate(self, output: output)
+                }
+            }
+        }
+    }
+    
+    /**
+     Exponential smoothing:
+     指数平滑算法
+     smoothing 平滑常数
+     https://en.wikipedia.org/wiki/Exponential_smoothing
+     */
+    fileprivate func smooth(_ value: Float) -> Float {
+        var frequency = value
+        if smoothingBuffer.count > 0 {
+            let last = smoothingBuffer.last!
+            frequency = (smoothing * value) + (1.0 - smoothing) * last
+            if smoothingBuffer.count > smoothingBufferCount {
+                smoothingBuffer.removeFirst()
+            }
+        }
+        smoothingBuffer.append(frequency)
+        return frequency
+    }
+    
+    /**
+     Transfer frequency and amplitude to TunerOutput
+    */
+    static func newOutput(_ frequency: Float, _ amplitude: Float) -> TunerOutput {
+        let output = TunerOutput()
+        
+        var norm = frequency
+        while norm > frequencies[frequencies.count - 1] {
+            norm = norm / 2.0
+        }
+        while norm < frequencies[0] {
+            norm = norm * 2.0
+        }
+        
+        var i = -1
+        var min = Float.infinity
+        for n in 0...frequencies.count-1 {
+            let diff = frequencies[n] - norm
+            if abs(diff) < abs(min) {
+                min = diff
+                i = n
+            }
+        }
+        
+        output.octave = i / 12
+        output.frequency = frequency
+        output.amplitude = amplitude
+        output.distance = frequency - frequencies[i]
+        output.pitch = String(format: "%@", sharps[i % sharps.count], flats[i % flats.count])
+        
+        return output
+    }
+}

+ 24 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.h

@@ -0,0 +1,24 @@
+//
+//  ToneTuningBodyView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/14.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ToneTuningBodyView : UIView
+
+@property (weak, nonatomic) IBOutlet UILabel *A4FrequenceLabel;
+
+@property (nonatomic, assign) NSInteger A4Frequence;
+
+
++ (instancetype)shareInstance;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 70 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.m

@@ -0,0 +1,70 @@
+//
+//  ToneTuningBodyView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/14.
+//
+
+#import "ToneTuningBodyView.h"
+
+@interface ToneTuningBodyView ()
+
+@property (weak, nonatomic) IBOutlet UIView *plateView;
+
+@property (weak, nonatomic) IBOutlet UIButton *minusButton;
+
+@property (weak, nonatomic) IBOutlet UIButton *addButton;
+
+@property (weak, nonatomic) IBOutlet UIView *pitchBgView;
+
+@end
+
+@implementation ToneTuningBodyView
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    
+    CAGradientLayer *layer = [self createGradientLayerFromColor:HexRGB(0x323D50) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x1C2331) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, KPortraitWidth - 28, 170)];
+    layer.cornerRadius = 11.0f;
+    layer.masksToBounds = YES;
+    [self.pitchBgView.layer addSublayer:layer];
+    
+    CAGradientLayer *buttonLayer = [self createGradientLayerFromColor:HexRGB(0x3C495F) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x1C2331) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, 50, 31)];
+    buttonLayer.cornerRadius = 15.5f;
+    buttonLayer.masksToBounds = YES;
+    [self.minusButton.layer addSublayer:buttonLayer];
+    
+    CAGradientLayer *buttonLayer2 = [self createGradientLayerFromColor:HexRGB(0x3C495F) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x1C2331) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, 50, 31)];
+    buttonLayer2.cornerRadius = 15.5f;
+    buttonLayer2.masksToBounds = YES;
+    [self.addButton.layer addSublayer:buttonLayer2];
+    
+}
+
++ (instancetype)shareInstance {
+    ToneTuningBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"ToneTuningBodyView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+
+
+- (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
+    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
+    gradientLayer.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)endColor.CGColor];
+    gradientLayer.startPoint = startPoint;
+    gradientLayer.endPoint = endPoint;
+    gradientLayer.frame = bounds;
+    gradientLayer.locations = @[@(0),@(1.0f)];
+    return gradientLayer;
+}
+
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 238 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.xib

@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_0" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="ToneTuningBodyView">
+            <rect key="frame" x="0.0" y="0.0" width="390" height="844"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="A4=440Hz" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ux8-2g-RqK">
+                    <rect key="frame" x="22" y="10" width="80" height="22"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="22" id="0p2-aR-QPJ"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                    <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="tuning_warning" translatesAutoresizingMaskIntoConstraints="NO" id="Sbe-L2-liH">
+                    <rect key="frame" x="107" y="15" width="13" height="12"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="13" id="A7f-bT-aBO"/>
+                        <constraint firstAttribute="height" constant="12" id="gve-gP-2q7"/>
+                    </constraints>
+                </imageView>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="plate_bg" translatesAutoresizingMaskIntoConstraints="NO" id="SXB-cz-Qdh">
+                    <rect key="frame" x="8" y="42" width="374" height="254"/>
+                    <constraints>
+                        <constraint firstAttribute="width" secondItem="SXB-cz-Qdh" secondAttribute="height" multiplier="187:127" id="ixC-MD-R46"/>
+                    </constraints>
+                </imageView>
+                <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zrx-Pe-2NT">
+                    <rect key="frame" x="56" y="81" width="276" height="175"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Cai-ev-v5E">
+                    <rect key="frame" x="107" y="322.66666666666669" width="50" height="31"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="31" id="Uqc-Hy-CFM"/>
+                        <constraint firstAttribute="width" constant="50" id="aIN-Pe-lUG"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" image="frequence_minus"/>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
+                            <size key="value" width="0.0" height="2"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
+                            <real key="value" value="1"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
+                            <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.27000000000000002" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="15.5"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VJU-LE-Pdq">
+                    <rect key="frame" x="233" y="322.66666666666669" width="50" height="31"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="31" id="30u-8l-H8Y"/>
+                        <constraint firstAttribute="width" constant="50" id="nH5-lU-4GN"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" image="freguqnce_add"/>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
+                            <size key="value" width="0.0" height="2"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
+                            <real key="value" value="1"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="15.5"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </button>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CALIB" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sZj-ZO-VHR">
+                    <rect key="frame" x="174" y="328" width="42" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="NtT-NM-EEj"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" name="DINAlternate-Bold" family="DIN Alternate" pointSize="16"/>
+                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Em-FC-3EL">
+                    <rect key="frame" x="14" y="380" width="362" height="170"/>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="170" id="z4J-oh-ydh"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="11"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
+                            <size key="value" width="0.0" height="2"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
+                            <real key="value" value="1"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="YES"/>
+                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
+                            <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tkl-Cw-Mdz">
+                    <rect key="frame" x="6" y="562" width="189" height="90"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="90" id="t6I-nJ-9Qd"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" image="fork_unchoose" backgroundImage="forkButton_bg"/>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="p0z-qL-bMm">
+                    <rect key="frame" x="195" y="560" width="189" height="90"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="90" id="D2z-en-N9g"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" image="fork_unPlay" backgroundImage="playButton_bg"/>
+                </button>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="toning_bottom" translatesAutoresizingMaskIntoConstraints="NO" id="IXi-hL-in1">
+                    <rect key="frame" x="26" y="659" width="338" height="29"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="338" id="Ohx-Sa-5XQ"/>
+                        <constraint firstAttribute="height" constant="29" id="tsc-a8-bbh"/>
+                    </constraints>
+                </imageView>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5sT-Eb-2rJ">
+                    <rect key="frame" x="56" y="264" width="42" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                    <nil key="textColor"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ke2-CX-K7G">
+                    <rect key="frame" x="293" y="264" width="42" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                    <nil key="textColor"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="tuning_decorate" translatesAutoresizingMaskIntoConstraints="NO" id="v4Z-dA-iqI">
+                    <rect key="frame" x="37" y="322" width="48" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="32" id="7Od-xm-q3j"/>
+                        <constraint firstAttribute="width" constant="48" id="9hP-Ux-x02"/>
+                    </constraints>
+                </imageView>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="tuning_decorate" translatesAutoresizingMaskIntoConstraints="NO" id="V2v-I8-jzm">
+                    <rect key="frame" x="305" y="322" width="48" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="48" id="e8K-AZ-0N3"/>
+                        <constraint firstAttribute="height" constant="32" id="qMW-a2-T7G"/>
+                    </constraints>
+                </imageView>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="sZj-ZO-VHR" firstAttribute="leading" secondItem="Cai-ev-v5E" secondAttribute="trailing" constant="17" id="0D9-VV-0Lx"/>
+                <constraint firstItem="p0z-qL-bMm" firstAttribute="top" secondItem="7Em-FC-3EL" secondAttribute="bottom" constant="10" id="4SR-6A-ipm"/>
+                <constraint firstItem="p0z-qL-bMm" firstAttribute="leading" secondItem="Tkl-Cw-Mdz" secondAttribute="trailing" id="5EB-Vw-dj2"/>
+                <constraint firstItem="Cai-ev-v5E" firstAttribute="leading" secondItem="v4Z-dA-iqI" secondAttribute="trailing" constant="22" id="6b8-ki-CY9"/>
+                <constraint firstItem="7Em-FC-3EL" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="7ZV-OX-B1b"/>
+                <constraint firstItem="Cai-ev-v5E" firstAttribute="centerY" secondItem="v4Z-dA-iqI" secondAttribute="centerY" id="8Eb-SN-txF"/>
+                <constraint firstItem="IXi-hL-in1" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="Au1-eF-R25"/>
+                <constraint firstItem="VJU-LE-Pdq" firstAttribute="leading" secondItem="sZj-ZO-VHR" secondAttribute="trailing" constant="17" id="C3a-5i-dtf"/>
+                <constraint firstItem="p0z-qL-bMm" firstAttribute="width" secondItem="Tkl-Cw-Mdz" secondAttribute="width" id="Dk9-Wv-4mD"/>
+                <constraint firstItem="SXB-cz-Qdh" firstAttribute="top" secondItem="Ux8-2g-RqK" secondAttribute="bottom" constant="10" id="FYQ-Rq-QtT"/>
+                <constraint firstItem="SXB-cz-Qdh" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="8" id="O3Y-u0-MV3"/>
+                <constraint firstItem="sZj-ZO-VHR" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="PEf-sX-DzU"/>
+                <constraint firstItem="Tkl-Cw-Mdz" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="6" id="Q9g-JT-4o6"/>
+                <constraint firstAttribute="trailing" secondItem="p0z-qL-bMm" secondAttribute="trailing" constant="6" id="RoG-8u-1ap"/>
+                <constraint firstItem="V2v-I8-jzm" firstAttribute="centerY" secondItem="VJU-LE-Pdq" secondAttribute="centerY" id="T1g-e0-zDn"/>
+                <constraint firstItem="V2v-I8-jzm" firstAttribute="leading" secondItem="VJU-LE-Pdq" secondAttribute="trailing" constant="22" id="YYc-Q5-aGD"/>
+                <constraint firstItem="IXi-hL-in1" firstAttribute="top" secondItem="Tkl-Cw-Mdz" secondAttribute="bottom" constant="7" id="YgN-1n-xha"/>
+                <constraint firstAttribute="trailing" secondItem="7Em-FC-3EL" secondAttribute="trailing" constant="14" id="a3n-fN-euB"/>
+                <constraint firstItem="sZj-ZO-VHR" firstAttribute="centerY" secondItem="Cai-ev-v5E" secondAttribute="centerY" id="cIh-IQ-xRr"/>
+                <constraint firstItem="Tkl-Cw-Mdz" firstAttribute="top" secondItem="7Em-FC-3EL" secondAttribute="bottom" constant="12" id="cJp-sC-nM0"/>
+                <constraint firstItem="Sbe-L2-liH" firstAttribute="centerY" secondItem="Ux8-2g-RqK" secondAttribute="centerY" id="cmi-yM-djK"/>
+                <constraint firstItem="Ux8-2g-RqK" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="22" id="cwN-DO-wkV"/>
+                <constraint firstItem="Ux8-2g-RqK" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="ev8-FX-ve4"/>
+                <constraint firstItem="Sbe-L2-liH" firstAttribute="leading" secondItem="Ux8-2g-RqK" secondAttribute="trailing" constant="5" id="meC-LK-DKS"/>
+                <constraint firstItem="7Em-FC-3EL" firstAttribute="top" secondItem="sZj-ZO-VHR" secondAttribute="bottom" constant="32" id="pZl-CI-zNY"/>
+                <constraint firstItem="VJU-LE-Pdq" firstAttribute="centerY" secondItem="Cai-ev-v5E" secondAttribute="centerY" id="usx-pc-WFX"/>
+                <constraint firstItem="sZj-ZO-VHR" firstAttribute="top" secondItem="SXB-cz-Qdh" secondAttribute="bottom" constant="32" id="v2V-ca-D8A"/>
+                <constraint firstAttribute="trailing" secondItem="SXB-cz-Qdh" secondAttribute="trailing" constant="8" id="vQ0-wP-c03"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="A4FrequenceLabel" destination="Ux8-2g-RqK" id="Jra-7M-iTB"/>
+                <outlet property="addButton" destination="VJU-LE-Pdq" id="Ap2-3f-er6"/>
+                <outlet property="minusButton" destination="Cai-ev-v5E" id="7T1-RS-zM3"/>
+                <outlet property="pitchBgView" destination="7Em-FC-3EL" id="0rG-SE-app"/>
+                <outlet property="plateView" destination="Zrx-Pe-2NT" id="ppk-X8-oX5"/>
+            </connections>
+            <point key="canvasLocation" x="93.84615384615384" y="-12.085308056872037"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="forkButton_bg" width="182" height="90"/>
+        <image name="fork_unPlay" width="42" height="28"/>
+        <image name="fork_unchoose" width="42" height="28"/>
+        <image name="freguqnce_add" width="14" height="14"/>
+        <image name="frequence_minus" width="14" height="14"/>
+        <image name="plate_bg" width="359" height="254"/>
+        <image name="playButton_bg" width="182" height="90"/>
+        <image name="toning_bottom" width="338" height="29"/>
+        <image name="tuning_decorate" width="48" height="32"/>
+        <image name="tuning_warning" width="13" height="12"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 1 - 1
KulexiuForStudent/Podfile

@@ -49,7 +49,7 @@ target 'KulexiuForStudent' do
   pod 'AlipaySDK-iOS'
   #lottie 动画库
   pod 'lottie-ios', '~> 2.5'
-  
+  pod 'AudioKit', '~>5.0.0'
   # Pods for KulexiuForStudent
 
   target 'KulexiuForStudentTests' do

+ 1 - 1
KulexiuForStudent/Podfile.lock

@@ -189,6 +189,6 @@ SPEC CHECKSUMS:
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
   ZKCycleScrollView: 4b353d17b7f469b245a1c606d5a977e72b940895
 
-PODFILE CHECKSUM: 91b204a946d66914675de95cadc9a38a9c35beb1
+PODFILE CHECKSUM: 392e3069218a89ef3a9ef998902b3b9f8e9df601
 
 COCOAPODS: 1.11.3

+ 1 - 1
KulexiuForStudent/Pods/Manifest.lock

@@ -189,6 +189,6 @@ SPEC CHECKSUMS:
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
   ZKCycleScrollView: 4b353d17b7f469b245a1c606d5a977e72b940895
 
-PODFILE CHECKSUM: 91b204a946d66914675de95cadc9a38a9c35beb1
+PODFILE CHECKSUM: 392e3069218a89ef3a9ef998902b3b9f8e9df601
 
 COCOAPODS: 1.11.3

File diff suppressed because it is too large
+ 255 - 267
KulexiuForStudent/Pods/Pods.xcodeproj/project.pbxproj


+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/AFNetworking.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Bugly.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/CHIPageControl.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/IQKeyboardManager.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/JCore.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/JPush.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/JXCategoryView.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/JXPagingView.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/MBProgressHUD.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/MJExtension.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/MJRefresh.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Masonry.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Pods-KulexiuForStudent-KulexiuForStudentUITests.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Pods-KulexiuForStudent.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Pods-KulexiuForStudentTests.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/RSKImageCropper.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Reachability.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/RongCloudIM.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/RongCloudRTC.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/SDWebImage.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/SSZipArchive.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/SocketRocket.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Whiteboard-Whiteboard.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/Whiteboard.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/YYModel.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/ZKCycleScrollView.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1240"
+   LastUpgradeVersion = "1400"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

+ 1 - 1
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent.debug.xcconfig

@@ -1,5 +1,5 @@
+ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CHIPageControl" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/NTLBridge" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/TYCyclePagerView" "${PODS_CONFIGURATION_BUILD_DIR}/Whiteboard" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/ZKCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/iOS-KS3SDK" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/RongCloudIM/RongCloudIM" "${PODS_ROOT}/RongCloudRTC/RongCloudRTC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/ChatRoom" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/CustomerService" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Discussion" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMLib" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMLibCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/PublicService" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Sight" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudRTC/RongRTCLib"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1

+ 1 - 1
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent.release.xcconfig

@@ -1,5 +1,5 @@
+ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CHIPageControl" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/NTLBridge" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/TYCyclePagerView" "${PODS_CONFIGURATION_BUILD_DIR}/Whiteboard" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/ZKCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/iOS-KS3SDK" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios" "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/RongCloudIM/RongCloudIM" "${PODS_ROOT}/RongCloudRTC/RongCloudRTC" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/ChatRoom" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/CustomerService" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Discussion" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMLib" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMLibCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/PublicService" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Sight" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudRTC/RongRTCLib"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1

Some files were not shown because too many files changed in this diff