From: liangzhenying <867174124@qq.com>
Date: Fri, 30 Jan 2026 08:17:27 +0000 (+0800)
Subject: 加了运动设置页
X-Git-Tag: åç§AIæé®ææ~3
X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=afb50dd38c1848274a95940a0ff13c7370e9a0f3;p=mirrors%2FShenYin.git
加了运动设置页
---
diff --git a/ShenYin/Podfile.lock b/ShenYin/Podfile.lock
index b49030b..871b96f 100644
--- a/ShenYin/Podfile.lock
+++ b/ShenYin/Podfile.lock
@@ -1,4 +1,11 @@
PODS:
+ - AMap3DMap-NO-IDFA (10.0.700):
+ - AMapFoundation-NO-IDFA (>= 1.8.0)
+ - AMapFoundation-NO-IDFA (1.8.2)
+ - AMapLocation-NO-IDFA (2.10.0):
+ - AMapFoundation-NO-IDFA (>= 1.8.0)
+ - AMapSearch-NO-IDFA (9.7.0):
+ - AMapFoundation-NO-IDFA (>= 1.8.0)
- CryptoSwift (1.8.4)
- DeviceKit (5.4.0)
- DGActivityIndicatorView (2.1.1)
@@ -70,6 +77,9 @@ PODS:
- ZipArchive (1.4.0)
DEPENDENCIES:
+ - AMap3DMap-NO-IDFA (= 10.0.700)
+ - AMapLocation-NO-IDFA
+ - AMapSearch-NO-IDFA (= 9.7.0)
- CryptoSwift
- DeviceKit (~> 5.4.0)
- DGActivityIndicatorView
@@ -97,6 +107,10 @@ DEPENDENCIES:
SPEC REPOS:
https://gitee.com/mirrors/CocoaPods-Specs.git:
+ - AMap3DMap-NO-IDFA
+ - AMapFoundation-NO-IDFA
+ - AMapLocation-NO-IDFA
+ - AMapSearch-NO-IDFA
- CryptoSwift
- DeviceKit
- DGActivityIndicatorView
@@ -130,6 +144,10 @@ SPEC REPOS:
- ZipArchive
SPEC CHECKSUMS:
+ AMap3DMap-NO-IDFA: e029d65ea35d3e4c0a948e1dab9e77109bf0e86a
+ AMapFoundation-NO-IDFA: 6ce0ef596d4eb8d934ff498e56747b6de1247b05
+ AMapLocation-NO-IDFA: 735791aeb1ba52dff666e4158b86caf4b68b5be7
+ AMapSearch-NO-IDFA: 749f73d5a773758f01a24eb8872f8798c8b47cb4
CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90
DeviceKit: bd34bb1766d926c3cc5a5f6e3e9a6dd10148b805
DGActivityIndicatorView: ff2c76073d79692f724863c8dd38685866a03cb6
@@ -162,6 +180,6 @@ SPEC CHECKSUMS:
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
ZipArchive: e25a4373192673e3229ac8d6e9f64a3e5713c966
-PODFILE CHECKSUM: 8be0cb581e3b6cc73fee508087fb68b46cbcd963
+PODFILE CHECKSUM: 72f4eaacbe6e66655fb7c7aef1807fd74a1fd9b2
COCOAPODS: 1.16.2
diff --git a/ShenYin/Pods/Kingfisher/PrivacyInfo.xcprivacy b/ShenYin/Pods/Kingfisher/PrivacyInfo.xcprivacy
deleted file mode 100644
index 6af1641..0000000
--- a/ShenYin/Pods/Kingfisher/PrivacyInfo.xcprivacy
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- NSPrivacyTracking
-
- NSPrivacyCollectedDataTypes
-
- NSPrivacyTrackingDomains
-
- NSPrivacyAccessedAPITypes
-
-
-
diff --git a/ShenYin/Pods/MBProgressHUD/PrivacyInfo.xcprivacy b/ShenYin/Pods/MBProgressHUD/PrivacyInfo.xcprivacy
deleted file mode 100644
index 6af1641..0000000
--- a/ShenYin/Pods/MBProgressHUD/PrivacyInfo.xcprivacy
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- NSPrivacyTracking
-
- NSPrivacyCollectedDataTypes
-
- NSPrivacyTrackingDomains
-
- NSPrivacyAccessedAPITypes
-
-
-
diff --git a/ShenYin/ShenYin.xcodeproj/project.pbxproj b/ShenYin/ShenYin.xcodeproj/project.pbxproj
index 7604f7b..39f6992 100644
--- a/ShenYin/ShenYin.xcodeproj/project.pbxproj
+++ b/ShenYin/ShenYin.xcodeproj/project.pbxproj
@@ -8,6 +8,11 @@
/* Begin PBXBuildFile section */
30B13DEF1AA0E4C54D873276 /* Pods_playboy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4F1BB919D567C3B6B0EBAA7 /* Pods_playboy.framework */; };
+ 3F0369602F2B604800F3CB95 /* DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */; };
+ 3F0369612F2B604800F3CB95 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
+ 3F0369622F2B604800F3CB95 /* Pods_playboy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4F1BB919D567C3B6B0EBAA7 /* Pods_playboy.framework */; };
+ 3F0369642F2B604800F3CB95 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */; };
+ 3F0369672F2B604800F3CB95 /* DeepChordsSdk.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
3F8F58292EBCA2B800FFC00B /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */; };
3FD1DFED2F0E00BF00A62733 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */; };
3FFB77C12F179F3100EF9A60 /* DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */; };
@@ -19,6 +24,13 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
+ 3F03695C2F2B604800F3CB95 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 3F887B942E38D8DC00C98658 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 0D54E0EE2F0A61E600A80EE7;
+ remoteInfo = DeepChordsSdk;
+ };
3FD1DFE52F0E00BF00A62733 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 3F887B942E38D8DC00C98658 /* Project object */;
@@ -29,6 +41,17 @@
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
+ 3F0369662F2B604800F3CB95 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 3F0369672F2B604800F3CB95 /* DeepChordsSdk.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
3FD1DFEF2F0E00BF00A62733 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@@ -69,6 +92,8 @@
16E2FB8C843A2136E114E451 /* Pods-demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-demo.debug.xcconfig"; path = "Target Support Files/Pods-demo/Pods-demo.debug.xcconfig"; sourceTree = ""; };
248D8B53B5A178ACA5867275 /* Pods_DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; };
34AD41433DCDC288CFB8C5DA /* Pods-playboy.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-playboy.release.xcconfig"; path = "Target Support Files/Pods-playboy/Pods-playboy.release.xcconfig"; sourceTree = ""; };
+ 3F03696B2F2B604900F3CB95 /* playboy copy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "playboy copy.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3F03696D2F2B604900F3CB95 /* playboy copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "playboy copy-Info.plist"; path = "/Users/yaozuopan/Documents/code/ShenYin/ShenYin/playboy copy-Info.plist"; sourceTree = ""; };
3F7602EA2EFA891200588C18 /* DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3F887B9C2E38D8DC00C98658 /* ShenYin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ShenYin.app; sourceTree = BUILT_PRODUCTS_DIR; };
3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; };
@@ -85,12 +110,60 @@
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
- 3F887BAE2E38D8DD00C98658 /* Exceptions for "ShenYin" folder in "ShenYin" target */ = {
+ 3F03696C2F2B604900F3CB95 /* Exceptions for "ShenYin" folder in "playboy copy" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
+ "/Localized: LaunchScreen.storyboard",
+ "/Localized: Main.storyboard",
+ Api/HttpClient.swift,
+ Api/ResponseBaseModel.swift,
+ Assets.xcassets,
+ Cache/AiLanguageCache.swift,
+ Cache/BannerCache.swift,
+ Cache/CacheManager.swift,
+ Cache/ChatCache.swift,
+ Cache/CountryCache.swift,
+ Cache/DCFolder.swift,
+ Cache/DeviceCache.swift,
+ Cache/FileSaver.swift,
+ Cache/LanuageCache.swift,
+ Cache/RecordCache.swift,
+ Cache/RecordDetailModel.swift,
+ Cache/TipsCache.swift,
+ Cache/UserCache.swift,
+ Cache/UserInfo.swift,
+ Cache/UserModel.swift,
Info.plist,
+ lan/Arabic.swift,
+ lan/CCAiSupportLanguage.swift,
+ lan/chinese.swift,
+ lan/english.swift,
+ lan/Filipino.swift,
+ lan/french.swift,
+ lan/German.swift,
+ lan/indonesian.swift,
+ lan/japanese.swift,
+ lan/korean.swift,
+ lan/LanConfig.swift,
+ lan/malay.swift,
+ lan/russian.swift,
+ lan/spanish.swift,
+ lan/thai.swift,
+ lan/TraditionalChinese.swift,
+ lan/Vietnam.swift,
+ Launch/AppDelegate.swift,
+ Launch/AppLaunch.swift,
+ Launch/AppManager.swift,
+ Launch/SceneDelegate.swift,
playboy.storyboard,
playboy.xcassets,
+ Resource/colors/Colors.swift,
+ "Resource/colors/Colors+YL.swift",
+ Resource/dialog_record.gif,
+ "Resource/fonts/UIFont+ZKYS.swift",
+ Resource/record_start_joy.gif,
+ Resource/record_start.gif,
+ Sdk/CCAiManager.swift,
Sdk/CCBleManager.swift,
Sdk/CCDevice.swift,
Sdk/CCPage.swift,
@@ -118,7 +191,293 @@
Sdk/DcSdk/VC/DcXclyVC.swift,
Sdk/DcSdk/VC/HomeDeviceVC.swift,
Sdk/DcSdk/VC/ModeVC.swift,
+ Sdk/JoySdk/tool/CCBleManager.swift,
+ Sdk/JoySdk/tool/CCConfig.swift,
+ Sdk/JoySdk/tool/CCDevice.swift,
+ Sdk/JoySdk/tool/CCPage.swift,
+ Sdk/JoySdk/tool/JoyCallRecord.swift,
+ Sdk/JoySdk/tool/JoyChat.swift,
+ Sdk/JoySdk/tool/JoyChinse2English.swift,
+ Sdk/JoySdk/tool/JoyDialog.swift,
+ Sdk/JoySdk/tool/JoyGemAI.framework,
+ Sdk/JoySdk/tool/JoyRecord.swift,
+ Sdk/JoySdk/tool/JoySdkManager.swift,
+ Sdk/JoySdk/tool/JoyTcty.swift,
+ Sdk/JoySdk/VC/AiFunctionVC.swift,
+ Sdk/JoySdk/VC/HomeDeviceVC.swift,
+ Sdk/JoySdk/VC/JoyCallingRecordVC.swift,
+ Sdk/JoySdk/VC/JoyChatVC.swift,
+ Sdk/JoySdk/VC/JoyChinese2EnglishVC.swift,
+ Sdk/JoySdk/VC/JoyDialogTranlateVC.swift,
+ Sdk/JoySdk/VC/JoyStereoCallVC.swift,
+ Sdk/JoySdk/VC/JoyTctyVC.swift,
+ Sdk/JoySdk/VC/JoyXclyVC.swift,
+ Sdk/JoySdk/VC/ModeVC.swift,
+ Sdk/LogManager.swift,
+ Sdk/Ota/JL_AdvParse.framework,
+ Sdk/Ota/JL_BLEKit.framework,
+ Sdk/Ota/JL_HashPair.framework,
+ Sdk/Ota/JL_OTALib.framework,
+ Sdk/Ota/JLBleAssistManager.m,
+ Sdk/Ota/JLLogHelper.framework,
+ Sdk/Ota/OtaManager.swift,
"ShenYin copy-Info.plist",
+ Tools/AESEncryption.swift,
+ Tools/BaseSizeMacro.swift,
+ "Tools/Category/Data+YL.swift",
+ "Tools/Category/Open+map.swift",
+ Tools/Date.swift,
+ "Tools/Extensions/Array+Develop.swift",
+ "Tools/Extensions/Array+Spec.swift",
+ "Tools/Extensions/CAGradientLayer+Develop.swift",
+ "Tools/Extensions/CALayer+Develop.swift",
+ "Tools/Extensions/CGRect+HTDevelop.swift",
+ "Tools/Extensions/CGSize+Fit.swift",
+ "Tools/Extensions/Codable+Spec.swift",
+ Tools/Extensions/CollectionExtensions.swift,
+ Tools/Extensions/ConstraintArrayDSL.swift,
+ "Tools/Extensions/Dictionary+Develop.swift",
+ "Tools/Extensions/DispatchQueue+Develop.swift",
+ "Tools/Extensions/FileManager+Develop.swift",
+ "Tools/Extensions/KeyPath+Develop.swift",
+ "Tools/Extensions/Number+Develop.swift",
+ Tools/Extensions/QueryParameters.swift,
+ "Tools/Extensions/Sequence+Develop.swift",
+ Tools/Extensions/SignedNumericExtensions.swift,
+ Tools/Extensions/SnapKit_Extension.swift,
+ "Tools/Extensions/String+Attribute.swift",
+ "Tools/Extensions/String+Develop.swift",
+ "Tools/Extensions/String+Encryption.swift",
+ "Tools/Extensions/String+RegExp.swift",
+ "Tools/Extensions/String+SubString.swift",
+ "Tools/Extensions/String+Week.swift",
+ "Tools/Extensions/String+YL.swift",
+ "Tools/Extensions/StringURL+Develop.swift",
+ "Tools/Extensions/Time+Develop.swift",
+ "Tools/Extensions/UIApplication+Develop.swift",
+ "Tools/Extensions/UIButton+Develop.swift",
+ "Tools/Extensions/UIDevice+Landscape.swift",
+ "Tools/Extensions/UIImage+Develop.swift",
+ "Tools/Extensions/UIImage+Gif.swift",
+ "Tools/Extensions/UIImage+ImageEffects.m",
+ "Tools/Extensions/UIImageView+Develop.swift",
+ "Tools/Extensions/UILabel+line.swift",
+ "Tools/Extensions/UINavigationBar+Develop.swift",
+ Tools/Extensions/UITableView_Extension.swift,
+ "Tools/Extensions/UITableView+Header.swift",
+ "Tools/Extensions/UITextField+Extension.swift",
+ "Tools/Extensions/UITextView+Scroll.swift",
+ "Tools/Extensions/UIView+Develop.swift",
+ "Tools/Extensions/UIView+Loading.swift",
+ "Tools/Extensions/UIView+Rect.swift",
+ "Tools/Extensions/UIView+Round.swift",
+ Tools/Extensions/UIViewExtension.swift,
+ Tools/Extensions/YCDevelop.swift,
+ Tools/Extensions/zhString.swift,
+ Tools/NumberToTime.swift,
+ Tools/PcmSound.m,
+ Tools/SizeFit.swift,
+ Tools/Then.swift,
+ Tools/TimerButton/YLTimerButton.m,
+ Tools/YLTools.swift,
+ UI/Base/BaseNavigation.swift,
+ UI/Base/BaseNC.swift,
+ UI/Base/BasePickerView.swift,
+ UI/Base/BasePresentView.swift,
+ UI/Base/BaseTableViewCell.swift,
+ UI/Base/BaseTableViewSetionHeader.swift,
+ UI/Base/BaseTC.swift,
+ UI/Base/BaseTextField.swift,
+ UI/Base/BaseVC.swift,
+ UI/Base/BaseView.swift,
+ UI/Base/BaseVM.swift,
+ UI/Base/ReusabelViewsInitProtocol.swift,
+ UI/Base/WebView/BaseWebView.swift,
+ UI/Base/WebView/BaseWebViewController.swift,
+ UI/common/BrokenLineView.swift,
+ UI/common/CommonCell.swift,
+ UI/common/CustomAlert.swift,
+ UI/common/CustomButton.swift,
+ UI/common/ImagePickerManager.swift,
+ UI/common/LoadingButton.swift,
+ UI/common/LogVC.swift,
+ UI/common/NotificationManager.swift,
+ UI/common/PlaceHolderTextView.swift,
+ UI/common/pop/ConnectPopView.swift,
+ UI/common/pop/CustomPicker.swift,
+ UI/common/pop/CustomPicker2.swift,
+ UI/common/pop/CustomPicker3.swift,
+ UI/common/pop/CustomPicker4.swift,
+ UI/common/pop/LanguagePicker/LanguagePickerTitle.swift,
+ UI/common/pop/LanguagePicker/LanguagePickerView.swift,
+ UI/common/pop/LanguagePicker/LanguageSelectItem.swift,
+ UI/common/pop/PopCloudView.swift,
+ UI/common/pop/PopMenu.swift,
+ UI/common/pop/PopPlayView.swift,
+ UI/common/pop/PopTextField.swift,
+ UI/common/pop/RecordPopView.swift,
+ UI/common/pop/RecordTipsView.swift,
+ "UI/common/ScrollView+Bottom.swift",
+ UI/common/SendToolBar.swift,
+ UI/common/YLprogressHUD.swift,
+ UI/common/YLProgressMB.swift,
+ UI/Customer/CustomerHeaderView.swift,
+ UI/Customer/CustomerVC.swift,
+ UI/Customer/QaHeaderView.swift,
+ UI/Home/Chat/CCRole.swift,
+ UI/Home/Chat/ChatCell.swift,
+ UI/Home/Chat/ChatHeaderView.swift,
+ UI/Home/Chat/ChatNavigationBarItem.swift,
+ UI/Home/Chat/ChatRecordBar.swift,
+ UI/Home/Chat/IntelligentVC.swift,
+ UI/Home/Chat/RecordButton.swift,
+ UI/Home/Chat/RoleListVC.swift,
+ UI/Home/Chinese2English/Chinese2EnglishCell.swift,
+ UI/Home/Device/BackgroundModel.swift,
+ UI/Home/Device/BackgroundVC.swift,
+ UI/Home/Device/DeviceModel.swift,
+ UI/Home/Device/HomeAddDeviceView.swift,
+ UI/Home/Device/HomeDeviceCell.swift,
+ UI/Home/Device/HomeHeadInfoView.swift,
+ UI/Home/Dialog/DialogRecordBar.swift,
+ UI/Home/Dialog/DialogSplitView.swift,
+ UI/Home/Dialog/DialogTranslateCell.swift,
+ UI/Home/FieldRecording/FieldRecordBar.swift,
+ UI/Home/FieldRecording/RecordBar.swift,
+ UI/Home/FieldRecording/RhythView.swift,
+ UI/Home/HistoryRecord/HistoryRecordCell.swift,
+ UI/Home/HistoryRecord/HistoryRecordVM.swift,
+ UI/Home/HistoryRecord/RecordHistoryBottomView.swift,
+ UI/Home/HistoryRecord/RecordHistoryModel.swift,
+ UI/Home/HistoryRecord/RecordSearchBar.swift,
+ UI/Home/HistoryRecord/search/CloudSelectedCell.swift,
+ UI/Home/HistoryRecord/search/CloudSelectedVC.swift,
+ UI/Home/HistoryRecord/search/HistorySearchBottomView.swift,
+ UI/Home/HistoryRecord/search/HistorySearchCell.swift,
+ UI/Home/HistoryRecord/search/HistorySelectedVC.swift,
+ UI/Home/HistoryRecord/SelecteCell.swift,
+ UI/Home/HistoryRecord/VC/CalendarPickerVC.swift,
+ UI/Home/HistoryRecord/VC/CloudRecordVC.swift,
+ UI/Home/HistoryRecord/VC/CloudSearchVC.swift,
+ UI/Home/HistoryRecord/VC/HistoryRecordVC.swift,
+ UI/Home/HistoryRecord/VC/HistorySearchVC.swift,
+ UI/Home/HistoryRecord/VC/RecordFontVC.swift,
+ UI/Home/HistoryRecord/VC/RecordShareVC.swift,
+ UI/Home/RecordDetail/RecordDetaiContent.swift,
+ UI/Home/RecordDetail/RecordDetailBar.swift,
+ UI/Home/RecordDetail/RecordDetailTopBar.swift,
+ UI/Home/RecordDetail/RecordDetailVC.swift,
+ UI/Home/Root/CurrentDeviceView.swift,
+ UI/Home/Root/HomeBottomView.swift,
+ UI/Home/Root/HomeFunctionView.swift,
+ UI/Home/Root/HomeHeadView.swift,
+ UI/Home/Scan/AddDeviceVC.swift,
+ UI/Home/Scan/BleScanVC.swift,
+ UI/Home/Scan/DeviceVM.swift,
+ UI/Home/Scan/ProductInfoModel.swift,
+ UI/Home/Scan/QrVC.swift,
+ UI/Home/TextTranslate/TextTranslateVC.swift,
+ UI/Home/TextTranslate/TranslateCell.swift,
+ UI/Login/Controller/Binding/BindingPhoneVC.swift,
+ UI/Login/Controller/Binding/VarifyBindingVC.swift,
+ UI/Login/Controller/ContryListVC.swift,
+ UI/Login/Controller/ForgetVC.swift,
+ UI/Login/Controller/LoginVC.swift,
+ UI/Login/Controller/RegisterVC.swift,
+ UI/Login/Controller/SetEmailVC.swift,
+ UI/Login/Controller/SetPhoneVC.swift,
+ UI/Login/Controller/SmsLoginVC.swift,
+ UI/Login/Controller/VerifyCodeVC.swift,
+ UI/Login/Controller/VerifyEmailVC.swift,
+ UI/Login/Controller/VerifyPhoneVC.swift,
+ UI/Login/View/AgreeView.swift,
+ UI/Login/View/CodeView.swift,
+ UI/Login/View/CustomInputView.swift,
+ UI/Login/View/LoginBgView.swift,
+ UI/Login/View/LoginHeaderView.swift,
+ UI/Login/View/OthersLoginView.swift,
+ UI/Login/View/PasswordView.swift,
+ UI/Login/View/RegionView.swift,
+ UI/Login/ViewModel/AppleLoginManager.swift,
+ UI/Login/ViewModel/IASignWithWeChat.swift,
+ UI/Login/ViewModel/LoginVM.swift,
+ UI/Mine/AboutVC.swift,
+ UI/Mine/AccountSetVC.swift,
+ UI/Mine/Device/DeviceInfoVC.swift,
+ UI/Mine/Device/MyDeviceListVC.swift,
+ UI/Mine/Feedback/Commit/FeedbackCommitVC.swift,
+ UI/Mine/Feedback/Commit/FeedbackContactView.swift,
+ UI/Mine/Feedback/Commit/FeedbackImageView.swift,
+ UI/Mine/Feedback/Commit/FeedbackInputView.swift,
+ UI/Mine/Feedback/Commit/FeedbackTypeView.swift,
+ UI/Mine/Feedback/FeedbackBottomView.swift,
+ UI/Mine/Feedback/FeedbackContentView.swift,
+ UI/Mine/Feedback/FeedbackHistoryVC.swift,
+ UI/Mine/Feedback/FeedbackQaListView.swift,
+ UI/Mine/Feedback/FeedbackVM.swift,
+ UI/Mine/Feedback/FeekbackVC.swift,
+ UI/Mine/Feedback/QaModel.swift,
+ UI/Mine/Instructions/InstructionsDetailVC.swift,
+ UI/Mine/Instructions/InstructionsModel.swift,
+ UI/Mine/Instructions/InstructionsVC.swift,
+ UI/Mine/Instructions/SearchBar.swift,
+ UI/Mine/LanguageVC.swift,
+ UI/Mine/LoginManager/DeviceLoginDetailVC.swift,
+ UI/Mine/LoginManager/DeviceLoginRecordModel.swift,
+ UI/Mine/LoginManager/DeviceLoginVC.swift,
+ UI/Mine/LoginManager/DeviceLoginVM.swift,
+ UI/Mine/MoreSetVC.swift,
+ UI/Mine/ProtocolVC.swift,
+ UI/Mine/RevokeCodeVC.swift,
+ UI/Mine/RevokeVC.swift,
+ UI/Mine/Root/BannerModel.swift,
+ UI/Mine/Root/MineBannerView.swift,
+ UI/Mine/Root/MineCell.swift,
+ UI/Mine/Root/MineHeaderView.swift,
+ UI/Mine/Root/MineNavBar.swift,
+ UI/Mine/Root/MineVC.swift,
+ UI/Mine/Update/AppUpdateModel.swift,
+ UI/Mine/Update/AppUpdateVM.swift,
+ UI/Mine/Update/BleUpdateVM.swift,
+ UI/Mine/Update/UpdateVC.swift,
+ UI/Mine/UserInfo/AreaVC.swift,
+ UI/Mine/UserInfo/CustomCell.swift,
+ UI/Mine/UserInfo/CustomSectionHeader.swift,
+ UI/Mine/UserInfo/GenderVC.swift,
+ UI/Mine/UserInfo/NickNameVC.swift,
+ UI/Mine/UserInfo/UserInfoCell.swift,
+ UI/Mine/UserInfo/UserInfoVC.swift,
+ UI/Mine/UserManagerVC.swift,
+ UI/Mode/CustomEqVC.swift,
+ UI/Mode/File.swift,
+ UI/Mode/FindVC.swift,
+ UI/Mode/GlassesFindVC.swift,
+ UI/Mode/ModeControView.swift,
+ UI/Mode/ModeEffectsType.swift,
+ UI/Mode/ModeEffectsView.swift,
+ UI/Mode/ModeFindView.swift,
+ UI/Raisound/AesEncrypt.swift,
+ UI/Raisound/MSVoiceChat.swift,
+ UI/Raisound/MSVoiceChatModel.swift,
+ UI/Raisound/record/AiMouseAudioRecord.m,
+ UI/Raisound/record/AiMouseRecordManager.m,
+ UI/Raisound/RSApi.swift,
+ UI/Raisound/RSAuth.swift,
+ UI/Raisound/RSChatCell.swift,
+ UI/Raisound/RSChatVC.swift,
+ UI/Raisound/RSManager.swift,
+ UI/Raisound/RSRecordBar.swift,
+ UI/Raisound/SwiftWebSocket.swift,
+ UI/Sleep/AudioPlayerManager.swift,
+ UI/Sleep/AudioPlayerVC.swift,
+ UI/Sleep/AudioPlayView.swift,
+ UI/Sleep/CircleProgressView.swift,
+ UI/Sleep/MusicCategory.swift,
+ UI/Sleep/MusicModel.swift,
+ UI/Sleep/SleepCell.swift,
+ UI/Sleep/SleepListView.swift,
+ UI/Sleep/SleepVC.swift,
+ UI/Sleep/SleepVM.swift,
UI/Sport/MusicRootView.swift,
UI/Sport/RecordRootView.swift,
UI/Sport/Sport/Ready/CountdownView.swift,
@@ -131,9 +490,50 @@
UI/Sport/Sport/root/RouteView.swift,
UI/Sport/Sport/root/SportRootView.swift,
UI/Sport/Sport/root/SportTypeView.swift,
+ UI/Sport/Sport/Set/SportSetCell.swift,
+ UI/Sport/Sport/Set/SportSetModel.swift,
+ UI/Sport/Sport/Set/SportSetVC.swift,
UI/Sport/Sport/Tools/MapManager.swift,
UI/Sport/SportHomeVC.swift,
UI/Sport/TranslateRootView.swift,
+ ViewController.swift,
+ );
+ target = 3F03695A2F2B604800F3CB95 /* playboy copy */;
+ };
+ 3F887BAE2E38D8DD00C98658 /* Exceptions for "ShenYin" folder in "ShenYin" target */ = {
+ isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
+ membershipExceptions = (
+ Info.plist,
+ playboy.storyboard,
+ playboy.xcassets,
+ Sdk/CCBleManager.swift,
+ Sdk/CCDevice.swift,
+ Sdk/CCPage.swift,
+ Sdk/DcSdk/tool/CCBleManager.swift,
+ Sdk/DcSdk/tool/CCConfig.swift,
+ Sdk/DcSdk/tool/CCDevice.swift,
+ Sdk/DcSdk/tool/CCPage.swift,
+ Sdk/DcSdk/tool/DcCall.swift,
+ Sdk/DcSdk/tool/DcChatManager.swift,
+ Sdk/DcSdk/tool/DcChinese2Enligsh.swift,
+ Sdk/DcSdk/tool/DcSdkManager.swift,
+ Sdk/DcSdk/tool/DcStereo.swift,
+ Sdk/DcSdk/tool/DcTcty.swift,
+ Sdk/DcSdk/tool/DcThly.swift,
+ Sdk/DcSdk/tool/DcXcly.swift,
+ Sdk/DcSdk/tool/JLAudioUnitKit.xcframework,
+ Sdk/DcSdk/tool/OpusTools.swift,
+ Sdk/DcSdk/VC/AiFunctionVC.swift,
+ Sdk/DcSdk/VC/DcCallingRecordVC.swift,
+ Sdk/DcSdk/VC/DcChatVC.swift,
+ Sdk/DcSdk/VC/DcChinese2EnglishVC.swift,
+ Sdk/DcSdk/VC/DcDialogTranslateVC.swift,
+ Sdk/DcSdk/VC/DcStereoCallVC.swift,
+ Sdk/DcSdk/VC/DcTctyVC.swift,
+ Sdk/DcSdk/VC/DcXclyVC.swift,
+ Sdk/DcSdk/VC/HomeDeviceVC.swift,
+ Sdk/DcSdk/VC/ModeVC.swift,
+ "ShenYin copy-Info.plist",
);
target = 3F887B9B2E38D8DC00C98658 /* ShenYin */;
};
@@ -180,6 +580,9 @@
UI/Sport/Sport/root/RouteView.swift,
UI/Sport/Sport/root/SportRootView.swift,
UI/Sport/Sport/root/SportTypeView.swift,
+ UI/Sport/Sport/Set/SportSetCell.swift,
+ UI/Sport/Sport/Set/SportSetModel.swift,
+ UI/Sport/Sport/Set/SportSetVC.swift,
UI/Sport/Sport/Tools/MapManager.swift,
UI/Sport/SportHomeVC.swift,
UI/Sport/TranslateRootView.swift,
@@ -245,6 +648,7 @@
3FCC8B152F1E0280004C2A13 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "ShenYin" target */,
3FD1DFF52F0E00BF00A62733 /* Exceptions for "ShenYin" folder in "playboy" target */,
3FCC8B1A2F1E030E004C2A13 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "playboy" target */,
+ 3F03696C2F2B604900F3CB95 /* Exceptions for "ShenYin" folder in "playboy copy" target */,
);
path = ShenYin;
sourceTree = "";
@@ -260,6 +664,16 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 3F03695F2F2B604800F3CB95 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3F0369602F2B604800F3CB95 /* DeepChordsSdk.framework in Frameworks */,
+ 3F0369612F2B604800F3CB95 /* (null) in Frameworks */,
+ 3F0369622F2B604800F3CB95 /* Pods_playboy.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
3F887B992E38D8DC00C98658 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -308,6 +722,7 @@
3F887B9D2E38D8DC00C98658 /* Products */,
34A14A83ECF09370871C891F /* Pods */,
676B86A4BA2639E8694D56B4 /* Frameworks */,
+ 3F03696D2F2B604900F3CB95 /* playboy copy-Info.plist */,
);
sourceTree = "";
};
@@ -317,6 +732,7 @@
3F887B9C2E38D8DC00C98658 /* ShenYin.app */,
0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */,
3FD1DFF42F0E00BF00A62733 /* playboy.app */,
+ 3F03696B2F2B604900F3CB95 /* playboy copy.app */,
);
name = Products;
sourceTree = "";
@@ -369,6 +785,30 @@
productReference = 0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */;
productType = "com.apple.product-type.framework";
};
+ 3F03695A2F2B604800F3CB95 /* playboy copy */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3F0369682F2B604800F3CB95 /* Build configuration list for PBXNativeTarget "playboy copy" */;
+ buildPhases = (
+ 3F03695D2F2B604800F3CB95 /* [CP] Check Pods Manifest.lock */,
+ 3F03695E2F2B604800F3CB95 /* Sources */,
+ 3F03695F2F2B604800F3CB95 /* Frameworks */,
+ 3F0369632F2B604800F3CB95 /* Resources */,
+ 3F0369652F2B604800F3CB95 /* [CP] Embed Pods Frameworks */,
+ 3F0369662F2B604800F3CB95 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 3F03695B2F2B604800F3CB95 /* PBXTargetDependency */,
+ );
+ fileSystemSynchronizedGroups = (
+ 3F887B9E2E38D8DC00C98658 /* ShenYin */,
+ );
+ name = "playboy copy";
+ productName = LingQi;
+ productReference = 3F03696B2F2B604900F3CB95 /* playboy copy.app */;
+ productType = "com.apple.product-type.application";
+ };
3F887B9B2E38D8DC00C98658 /* ShenYin */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3F887BAF2E38D8DD00C98658 /* Build configuration list for PBXNativeTarget "ShenYin" */;
@@ -379,6 +819,7 @@
3F887B9A2E38D8DC00C98658 /* Resources */,
5A934A35F54A5620CFD3C08A /* [CP] Embed Pods Frameworks */,
3FEFE9092F1B252000D82F17 /* Embed Frameworks */,
+ B5B3AFE4385DEF6B27A9A30F /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -451,6 +892,7 @@
3F887B9B2E38D8DC00C98658 /* ShenYin */,
0D54E0EE2F0A61E600A80EE7 /* DeepChordsSdk */,
3FD1DFE32F0E00BF00A62733 /* playboy */,
+ 3F03695A2F2B604800F3CB95 /* playboy copy */,
);
};
/* End PBXProject section */
@@ -463,6 +905,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 3F0369632F2B604800F3CB95 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3F0369642F2B604800F3CB95 /* PrivacyInfo.xcprivacy in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
3F887B9A2E38D8DC00C98658 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -482,6 +932,49 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
+ 3F03695D2F2B604800F3CB95 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-playboy-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 3F0369652F2B604800F3CB95 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-playboy/Pods-playboy-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ inputPaths = (
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-playboy/Pods-playboy-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-playboy/Pods-playboy-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
3FD1DFE62F0E00BF00A62733 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -568,6 +1061,27 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
+ B5B3AFE4385DEF6B27A9A30F /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ inputPaths = (
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
FEE3A20D8A2FA81E622C488B /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -600,6 +1114,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 3F03695E2F2B604800F3CB95 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
3F887B982E38D8DC00C98658 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -617,6 +1138,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
+ 3F03695B2F2B604800F3CB95 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 0D54E0EE2F0A61E600A80EE7 /* DeepChordsSdk */;
+ targetProxy = 3F03695C2F2B604800F3CB95 /* PBXContainerItemProxy */;
+ };
3FD1DFE42F0E00BF00A62733 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 0D54E0EE2F0A61E600A80EE7 /* DeepChordsSdk */;
@@ -737,6 +1263,117 @@
};
name = Release;
};
+ 3F0369692F2B604800F3CB95 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 0BF087E24C77C8FC87DA7D4C /* Pods-playboy.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_ENTITLEMENTS = ShenYin/ShenYin.entitlements;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1000;
+ DEVELOPMENT_TEAM = G23X75CJ67;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)",
+ "$(PROJECT_DIR)/ShenYin/Ota",
+ "$(PROJECT_DIR)/DeepChordsSdk",
+ "$(PROJECT_DIR)/ShenYin/Sdk/Ota",
+ "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk",
+ "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk/tool",
+ );
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = "playboy copy-Info.plist";
+ INFOPLIST_KEY_CFBundleDisplayName = PLAYBOY;
+ INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
+ INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "æ«æéè¿èç设å¤éè¦è·å¾æé";
+ INFOPLIST_KEY_NSCameraUsageDescription = "ä¿®æ¹ç¨æ·å¤´åãæäº¤æè§åé¦éè¦è®¿é®ç¸åä½¿ç¨æå头";
+ INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "å
许APP使ç¨å®ä½æ¹ä¾¿æ¥æ¾è³æº";
+ INFOPLIST_KEY_NSMicrophoneUsageDescription = "å½é³éè¦ä½¿ç¨éº¦å
é£";
+ INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "ä¿®æ¹ç¨æ·å¤´åãæäº¤æè§åé¦éè¦è®¿é®ç¸å";
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchStoryboardName = playboy.storyboard;
+ INFOPLIST_KEY_UIMainStoryboardFile = Main;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = UIInterfaceOrientationPortrait;
+ INFOPLIST_KEY_UIUserInterfaceStyle = Light;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
+ MARKETING_VERSION = 1.0.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.deepchords.playboy;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_OBJC_BRIDGING_HEADER = "ShenYin/ShenYin-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
+ };
+ name = Debug;
+ };
+ 3F03696A2F2B604800F3CB95 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 34AD41433DCDC288CFB8C5DA /* Pods-playboy.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_ENTITLEMENTS = ShenYin/ShenYin.entitlements;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1000;
+ DEVELOPMENT_TEAM = G23X75CJ67;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)",
+ "$(PROJECT_DIR)/ShenYin/Ota",
+ "$(PROJECT_DIR)/ShenYin/Sdk/Ota",
+ "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk",
+ "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk/tool",
+ "$(PROJECT_DIR)/DeepChordsSdk",
+ );
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = "playboy copy-Info.plist";
+ INFOPLIST_KEY_CFBundleDisplayName = PLAYBOY;
+ INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
+ INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "æ«æéè¿èç设å¤éè¦è·å¾æé";
+ INFOPLIST_KEY_NSCameraUsageDescription = "ä¿®æ¹ç¨æ·å¤´åãæäº¤æè§åé¦éè¦è®¿é®ç¸åä½¿ç¨æå头";
+ INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "å
许APP使ç¨å®ä½æ¹ä¾¿æ¥æ¾è³æº";
+ INFOPLIST_KEY_NSMicrophoneUsageDescription = "å½é³éè¦ä½¿ç¨éº¦å
é£";
+ INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "ä¿®æ¹ç¨æ·å¤´åãæäº¤æè§åé¦éè¦è®¿é®ç¸å";
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchStoryboardName = playboy.storyboard;
+ INFOPLIST_KEY_UIMainStoryboardFile = Main;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = UIInterfaceOrientationPortrait;
+ INFOPLIST_KEY_UIUserInterfaceStyle = Light;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
+ MARKETING_VERSION = 1.0.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.deepchords.playboy;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_OBJC_BRIDGING_HEADER = "ShenYin/ShenYin-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
+ };
+ name = Release;
+ };
3F887BB02E38D8DD00C98658 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5F5DE5910965D53C2B3405B0 /* Pods-ShenYin.debug.xcconfig */;
@@ -1094,6 +1731,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 3F0369682F2B604800F3CB95 /* Build configuration list for PBXNativeTarget "playboy copy" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3F0369692F2B604800F3CB95 /* Debug */,
+ 3F03696A2F2B604800F3CB95 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
3F887B972E38D8DC00C98658 /* Build configuration list for PBXProject "ShenYin" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/ShenYin/ShenYin/Launch/SceneDelegate.swift b/ShenYin/ShenYin/Launch/SceneDelegate.swift
index 0e753dc..3332c6d 100644
--- a/ShenYin/ShenYin/Launch/SceneDelegate.swift
+++ b/ShenYin/ShenYin/Launch/SceneDelegate.swift
@@ -17,9 +17,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
guard let _ = (scene as? UIWindowScene) else { return }
App.shared.window = window
- AppLaunch.start()
-// MapManager.shared.setupSdk()
-// window?.rootViewController = UINavigationController(rootViewController: RSChatVC())
+// AppLaunch.start()
+ MapManager.shared.setupSdk()
+ window?.rootViewController = UINavigationController(rootViewController: SportSetVC())
}
func sceneDidDisconnect(_ scene: UIScene) {
diff --git a/ShenYin/ShenYin/Sdk/DcSdk/tool/CCBleManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/CCBleManager.swift
index b388c31..a89ee81 100644
--- a/ShenYin/ShenYin/Sdk/DcSdk/tool/CCBleManager.swift
+++ b/ShenYin/ShenYin/Sdk/DcSdk/tool/CCBleManager.swift
@@ -217,12 +217,12 @@ extension CCBleManager{
func connectPeripheral(_ peripheral: DCPeripheral) {
connectPeripheral = peripheral
- if let name = peripheral.device.name,name.hasPrefix("AI") {
- CCDevice.isJoy = false
- }
- else{
- CCDevice.isJoy = true
- }
+// if let name = peripheral.device.name,name.hasPrefix("AI") {
+// CCDevice.isJoy = false
+// }
+// else{
+// CCDevice.isJoy = true
+// }
CCDevice.initSdk()
Logger.debug(peripheral.device.name ?? "","è¿æ¥ä¸...")
centralManager.connect(peripheral.device, options: [CBConnectPeripheralOptionEnableTransportBridgingKey:true])
diff --git a/ShenYin/ShenYin/Sdk/DcSdk/tool/CCConfig.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/CCConfig.swift
index 18e73f6..535fc20 100644
--- a/ShenYin/ShenYin/Sdk/DcSdk/tool/CCConfig.swift
+++ b/ShenYin/ShenYin/Sdk/DcSdk/tool/CCConfig.swift
@@ -5,44 +5,44 @@
// Created by liangshi on 2026/1/28.
//
-//class CCConfig{
-// static var appLanguage = AppSupportLanguage.english
-//
-// static let wxAppID = "wxd9d677e0024caa90"
-// static let wxUniversalLink = "https://dc-cloud-pub.tos-cn-guangzhou.volces.com/app/"
-// static let appStoreLink = "https://itunes.apple.com/cn/app/6752551504?mt=8"
-// /// çæ¬æ£æµ
-// static let appStoreVersionURL = "https://itunes.apple.com/cn/lookup?id=6752551504"
-//
-// /// æå¡å¨å°å
-// // static let baseURL = "http://118.145.178.188:32000"
-// static let baseURL = "https://app-api.deepchords.com"
-// //æµ·å¤ç
-// // static let baseURL = "https://app-api.deepchords-ai.com"
-//
-// /// ç¨æ·éç§åè®®å°å
-// static let yonghuBaseURL = "https://pub-tos.deepchords.com"
-//}
-//
-//
-
-
class CCConfig{
static var appLanguage = AppSupportLanguage.english
-
+
static let wxAppID = "wxd9d677e0024caa90"
- static let wxUniversalLink = "https://www.playboykq.com/app/"
- /// éç¨é¾æ¥
- // https://dc-cloud-pub.tos-cn-guangzhou.volces.com/apple-app-site-association
+ static let wxUniversalLink = "https://dc-cloud-pub.tos-cn-guangzhou.volces.com/app/"
static let appStoreLink = "https://itunes.apple.com/cn/app/6752551504?mt=8"
/// çæ¬æ£æµ
static let appStoreVersionURL = "https://itunes.apple.com/cn/lookup?id=6752551504"
-
+
/// æå¡å¨å°å
- static let baseURL = "https://app-api.playboykq.com"
-
-// https://pub-cdn.playboykq.com/protocol/cn/yonghuxieyi.html
+ // static let baseURL = "http://118.145.178.188:32000"
+ static let baseURL = "https://app-api.deepchords.com"
+ //æµ·å¤ç
+ // static let baseURL = "https://app-api.deepchords-ai.com"
+
/// ç¨æ·éç§åè®®å°å
- static let yonghuBaseURL = "https://pub-cdn.playboykq.com"
-
+ static let yonghuBaseURL = "https://pub-tos.deepchords.com"
}
+
+
+
+
+//class CCConfig{
+// static var appLanguage = AppSupportLanguage.english
+//
+// static let wxAppID = "wxd9d677e0024caa90"
+// static let wxUniversalLink = "https://www.playboykq.com/app/"
+// /// éç¨é¾æ¥
+// // https://dc-cloud-pub.tos-cn-guangzhou.volces.com/apple-app-site-association
+// static let appStoreLink = "https://itunes.apple.com/cn/app/6752551504?mt=8"
+// /// çæ¬æ£æµ
+// static let appStoreVersionURL = "https://itunes.apple.com/cn/lookup?id=6752551504"
+//
+// /// æå¡å¨å°å
+// static let baseURL = "https://app-api.playboykq.com"
+//
+//// https://pub-cdn.playboykq.com/protocol/cn/yonghuxieyi.html
+// /// ç¨æ·éç§åè®®å°å
+// static let yonghuBaseURL = "https://pub-cdn.playboykq.com"
+//
+//}
diff --git a/ShenYin/ShenYin/Sdk/DcSdk/tool/DcSdkManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcSdkManager.swift
index a2dee20..a9b6ec1 100644
--- a/ShenYin/ShenYin/Sdk/DcSdk/tool/DcSdkManager.swift
+++ b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcSdkManager.swift
@@ -14,7 +14,7 @@ class DcSdkManager{
func initSdk(){
DcCall.shared.start()
DCSdk.shared.initSDK()
- DCLogger.isDebug = true
+ DCLogger.isDebug = false
DCSdk.shared.authCallback = {[weak self] (code,msg)in
DCLogger.debug(code,msg)
guard let self = self else{return}
diff --git a/ShenYin/ShenYin/UI/Mine/AboutVC.swift b/ShenYin/ShenYin/UI/Mine/AboutVC.swift
index 1db3c4e..49edccd 100644
--- a/ShenYin/ShenYin/UI/Mine/AboutVC.swift
+++ b/ShenYin/ShenYin/UI/Mine/AboutVC.swift
@@ -49,7 +49,7 @@ extension AboutVC:UITableViewDelegate,UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = CustomCell.cell(withTableView: tableView, indexPath: indexPath)
- cell.type = list[indexPath.section][indexPath.row]
+ cell.titleLabel.text = list[indexPath.section][indexPath.row].title
let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
if indexPath.row == 0 {
cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12))
@@ -60,7 +60,7 @@ extension AboutVC:UITableViewDelegate,UITableViewDataSource {
else{
cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
}
- if cell.type == .revoke {
+ if list[indexPath.section][indexPath.row] == .revoke {
cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 12, height: 12))
}
diff --git a/ShenYin/ShenYin/UI/Mine/AccountSetVC.swift b/ShenYin/ShenYin/UI/Mine/AccountSetVC.swift
index 1809ed8..8116b4b 100644
--- a/ShenYin/ShenYin/UI/Mine/AccountSetVC.swift
+++ b/ShenYin/ShenYin/UI/Mine/AccountSetVC.swift
@@ -61,7 +61,7 @@ extension AccountSetVC:UITableViewDelegate,UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = CustomCell.cell(withTableView: tableView, indexPath: indexPath)
let list = list[indexPath.section].list
- cell.type = list[indexPath.row]
+ cell.titleLabel.text = list[indexPath.row].title
let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
if indexPath.row == 0 {
cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12))
diff --git a/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift b/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift
index d74f9c9..ac61392 100644
--- a/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift
+++ b/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift
@@ -8,7 +8,6 @@
import UIKit
class MoreSetVC: BaseVC{
let tableView = UITableView(frame: .zero, style: .plain)
-// let list:[CustomCellType] = [.notice,.system]
let list:[CustomCellType] = [.system]
let switchBtn = CustomButton()
@@ -107,7 +106,7 @@ extension MoreSetVC:UITableViewDelegate,UITableViewDataSource {
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = CustomCell.cell(withTableView: tableView, indexPath: indexPath)
- cell.type = list[indexPath.row]
+ cell.titleLabel.text = list[indexPath.row].title
let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
if indexPath.row == 0 {
cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12))
diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/CustomCell.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/CustomCell.swift
index 092b53c..3798dd2 100644
--- a/ShenYin/ShenYin/UI/Mine/UserInfo/CustomCell.swift
+++ b/ShenYin/ShenYin/UI/Mine/UserInfo/CustomCell.swift
@@ -5,15 +5,6 @@
// Created by liangshi on 2025/8/25.
//
public enum CustomCellType: Int {
- case avatar
- case nickName
- case gender
- case birthday
- case height
- case weight
- case hobbies
- case area
-
case account
case phone
case email
@@ -47,23 +38,7 @@ public enum CustomCellType: Int {
var title:String{
switch self {
- case .avatar:
- return "头å".l10n
- case .nickName:
- return "æµç§°".l10n
- case .gender:
- return "æ§å«".l10n
- case .birthday:
- return "çæ¥".l10n
- case .height:
- return "身é«".l10n
- case .weight:
- return "ä½é".l10n
- case .hobbies:
- return "è¿å¨å好".l10n
- case .area:
- return "å½å®¶ä¸å°åº".l10n
-
+
case .account:
return "è´¦å·å¯ç ".l10n
case .phone:
@@ -130,36 +105,6 @@ class CustomCell: BaseTableViewCell {
let valueIcon = UIImageView()
let valueLabel = UILabel()
- var type:CustomCellType = .area{
- didSet{
- titleLabel.text = type.title
- valueIcon.isHidden = type != .avatar
-
- if type == .nickName || type == .gender || type == .area {
- valueLabel.isHidden = false
- }
- else{
- valueLabel.isHidden = true
- }
- let info = CacheManager.shared.user.info
- if type == .nickName {
- valueLabel.text = info.userName
- }
- else if type == .gender {
- //1表示ç·ï¼0表示女ï¼2表示ä¿å¯
- valueLabel.text = info.gender.title
- }
- else if type == .area {
-// valueLabel.text = info.countryName
- valueLabel.text = info.cacheCountryName
- }
- else if type == .avatar{
- valueIcon.kf.setImage(with:CacheManager.shared.user.info.avatar.yc.asUrl )
- }
- }
- }
-
-
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
@@ -229,79 +174,4 @@ class CustomCell: BaseTableViewCell {
-class SwitchCell: BaseTableViewCell {
- let bgView = UIView()
- let titleLabel = UILabel()
- let detailLabel = UILabel()
- let iSwitch = UISwitch()
- var hasDetail:Bool = true{
- didSet{
- detailLabel.isHidden = !hasDetail
- if hasDetail {
- titleLabel.snp.makeConstraints { (m) in
- m.top.equalToSuperview().inset(16)
- m.left.equalToSuperview().offset(16)
- }
- }
- else{
- titleLabel.snp.makeConstraints { (m) in
- m.centerY.equalToSuperview()
- m.left.equalToSuperview().offset(16)
- }
-
- }
- }
- }
-
- override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
- super.init(style: style, reuseIdentifier: reuseIdentifier)
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- override func setupViews() {
- contentView.addSubview(bgView)
- bgView.addSubviews([titleLabel,detailLabel,iSwitch])
-
- backgroundColor = .color(.bgColor)
- contentView.backgroundColor = .clear
- selectionStyle = .none
- bgView.do { v in
- v.backgroundColor = .color(.cellBg)
- }
- titleLabel.do { (v) in
- v.textColor = .color(.first)
- v.font = .bold(14)
- v.textAlignment = .left
- }
- detailLabel.do { (v) in
- v.textColor = .color(.secondary)
- v.font = .regular(10)
- v.textAlignment = .left
- v.isHidden = !hasDetail
- }
- }
-
- override func setupLayout() {
- bgView.snp.makeConstraints { (m) in
- m.left.right.equalToSuperview().inset(18)
- m.top.equalToSuperview()
- m.bottom.equalToSuperview()
- }
- titleLabel.snp.makeConstraints { (m) in
- m.top.equalToSuperview().inset(16)
- m.left.equalToSuperview().offset(16)
- }
- detailLabel.snp.makeConstraints { (m) in
- m.bottom.equalToSuperview().inset(16)
- m.left.equalToSuperview().offset(16)
- }
- iSwitch.snp.makeConstraints { (m) in
- m.width.equalTo(50)
- m.height.equalToSuperview()
- m.right.equalToSuperview().inset(15)
- m.centerY.equalToSuperview()
- }
- }
-}
+
diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoCell.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoCell.swift
index 00f4f51..4f5b527 100644
--- a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoCell.swift
+++ b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoCell.swift
@@ -5,206 +5,139 @@
//// Created by liangshi on 2025/7/30.
////
//
-//import UIKit
-//
-//public enum UserInfoCellType: Int {
-// case avatar
-// case nickName
-// case gender
-// case area
-//
-//
-// case account
-// case phone
-// case email
-// case thirdLogin
-//
-// case deregister
-//
-// var title:String{
-// switch self {
-// case .avatar:
-// return "头å"
-// case .nickName:
-// return "æµç§°"
-// case .gender:
-// return "æ§å«"
-// case .area:
-// return "å½å®¶ä¸å°åº"
-//
-// case .account:
-// return "è´¦å·å¯ç "
-// case .phone:
-// return "å®å
¨ææº"
-// case .email:
-// return "å®å
¨é®ç®±"
-// case .thirdLogin:
-// return "ç¬¬ä¸æ¹è´¦å·"
-//
-//
-// case .deregister:
-// return "注éè´¦å·"
-// }
-// }
-//
-//}
-//
-//
-//class UserInfoCell: BaseTableViewCell {
-// let bgView = UIView()
-// let icon = UIImageView()
-// let titleLabel = UILabel()
-// let valueLabel = UILabel()
-// let nextIcon = UIImageView()
-//
-// var type:UserInfoCellType = .avatar{
-// didSet{
-// titleLabel.text = type.title
-// valueLabel.text = "1111"
-// }
-// }
-//
-// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
-// super.init(style: style, reuseIdentifier: reuseIdentifier)
-// }
-//
-// required init?(coder: NSCoder) {
-// fatalError("init(coder:) has not been implemented")
-// }
-// override func setupViews() {
-// contentView.addSubview(bgView)
-// bgView.addSubviews([titleLabel,icon,valueLabel,nextIcon])
-//
-// backgroundColor = .clear
-// contentView.backgroundColor = .clear
-// selectionStyle = .none
-// bgView.do { v in
-// v.backgroundColor = UIColor.black.withAlphaComponent(0.04)
-// v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor
-// v.layer.borderWidth = 0.5
-// v.layer.cornerRadius = 12
-// v.layer.masksToBounds = true
-// }
-// titleLabel.do { (v) in
-// v.textColor = .white
-// v.font = .medium(16)
-// v.textAlignment = .left
-// }
-// valueLabel.do { (v) in
-// v.textColor = .black.withAlphaComponent(0.8)
-// v.font = .medium(14)
-// v.textAlignment = .right
-// }
-// nextIcon.image = UIImage(named: "arrow_next")
-// }
-//
-// override func setupLayout() {
-// bgView.snp.makeConstraints { (m) in
-// m.left.right.equalToSuperview().inset(15)
-// m.top.equalToSuperview().inset(6)
-// m.bottom.equalToSuperview().inset(6)
-// m.height.equalTo(52)
-// }
-// nextIcon.snp.makeConstraints { (m) in
-// m.width.equalTo(20)
-// m.height.equalTo(20)
-// m.right.equalToSuperview().inset(15)
-// m.centerY.equalToSuperview()
-// }
-// icon.snp.makeConstraints { (m) in
-// m.width.equalTo(46)
-// m.height.equalTo(46)
-// m.right.equalToSuperview().inset(40)
-// m.centerY.equalToSuperview()
-// }
-// titleLabel.snp.makeConstraints { (m) in
-// m.centerY.equalTo(icon)
-// m.left.equalToSuperview().inset(15)
-// m.height.equalToSuperview()
-// }
-// valueLabel.snp.makeConstraints { (m) in
-// m.centerY.equalTo(icon)
-// m.right.equalToSuperview().inset(40)
-// m.height.equalToSuperview()
-// }
-//
-// }
-//}
-//
-//class UserInfoImageCell: BaseTableViewCell {
-// let bgView = UIView()
-// let icon = UIImageView()
-// let titleLabel = UILabel()
-// let nextIcon = UIImageView()
-// let imgPicker = ImagePickerManager()
-//
-// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
-// super.init(style: style, reuseIdentifier: reuseIdentifier)
-// }
-//
-// required init?(coder: NSCoder) {
-// fatalError("init(coder:) has not been implemented")
-// }
-// override func setupViews() {
-// contentView.addSubview(bgView)
-// bgView.addSubviews([titleLabel,icon,nextIcon])
-//
-// backgroundColor = .clear
-// contentView.backgroundColor = .clear
-// selectionStyle = .none
-// bgView.do { v in
-// v.backgroundColor = UIColor.black.withAlphaComponent(0.04)
-// v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor
-// v.layer.borderWidth = 0.5
-// v.layer.cornerRadius = 12
-// v.layer.masksToBounds = true
-// v.yc.addTap(target: self, action:#selector(pickImageAction ))
-// }
-// titleLabel.do { (v) in
-// v.textColor = .white
-// v.font = .medium(16)
-// v.textAlignment = .left
-// v.text = "头å"
-// }
-// icon.do { v in
-// v.yc.setCornerRadius(23)
-// v.backgroundColor = .black.withAlphaComponent(0.5)
-// }
-// nextIcon.image = UIImage(named: "arrow_next")
-// }
-//
-// override func setupLayout() {
-// bgView.snp.makeConstraints { (m) in
-// m.left.right.equalToSuperview().inset(15)
-// m.top.equalToSuperview().inset(6)
-// m.bottom.equalToSuperview().inset(6)
-// m.height.equalTo(72)
-// }
-// nextIcon.snp.makeConstraints { (m) in
-// m.width.equalTo(20)
-// m.height.equalTo(20)
-// m.right.equalToSuperview().inset(15)
-// m.centerY.equalToSuperview()
-// }
-// icon.snp.makeConstraints { (m) in
-// m.width.equalTo(46)
-// m.height.equalTo(46)
-// m.right.equalToSuperview().inset(40)
-// m.centerY.equalToSuperview()
-// }
-// titleLabel.snp.makeConstraints { (m) in
-// m.centerY.equalTo(icon)
-// m.left.equalToSuperview().inset(15)
-// m.height.equalToSuperview()
-// }
-//
-// }
-//
-// @objc func pickImageAction() -> Void {
-// imgPicker.showImagePicker(from: App.shared.topVC()) {[weak self] image in
-// guard let self = self else { return }
-// icon.image = image
-// }
-// }
-//}
-//
+public enum UserInfoCellType: Int {
+ case avatar
+ case nickName
+ case gender
+ case birthday
+ case height
+ case weight
+ case hobbies
+ case area
+
+ var title:String{
+ switch self {
+ case .avatar:
+ return "头å".l10n
+ case .nickName:
+ return "æµç§°".l10n
+ case .gender:
+ return "æ§å«".l10n
+ case .birthday:
+ return "çæ¥".l10n
+ case .height:
+ return "身é«".l10n
+ case .weight:
+ return "ä½é".l10n
+ case .hobbies:
+ return "è¿å¨å好".l10n
+ case .area:
+ return "å½å®¶ä¸å°åº".l10n
+ }
+ }
+}
+
+
+class UserInfoCell: BaseTableViewCell {
+ let bgView = UIView()
+ let titleLabel = UILabel()
+ let nextIcon = UIImageView()
+ let valueIcon = UIImageView()
+ let valueLabel = UILabel()
+
+ var type:UserInfoCellType = .area{
+ didSet{
+ titleLabel.text = type.title
+ valueIcon.isHidden = type != .avatar
+
+ if type == .nickName || type == .gender || type == .area {
+ valueLabel.isHidden = false
+ }
+ else{
+ valueLabel.isHidden = true
+ }
+ let info = CacheManager.shared.user.info
+ if type == .nickName {
+ valueLabel.text = info.userName
+ }
+ else if type == .gender {
+ //1表示ç·ï¼0表示女ï¼2表示ä¿å¯
+ valueLabel.text = info.gender.title
+ }
+ else if type == .area {
+ // valueLabel.text = info.countryName
+ valueLabel.text = info.cacheCountryName
+ }
+ else if type == .avatar{
+ valueIcon.kf.setImage(with:CacheManager.shared.user.info.avatar.yc.asUrl )
+ }
+ }
+ }
+
+
+ override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
+ super.init(style: style, reuseIdentifier: reuseIdentifier)
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+ override func setupViews() {
+ contentView.addSubview(bgView)
+ bgView.addSubviews([titleLabel,nextIcon,valueIcon,valueLabel])
+
+ backgroundColor = .color(.bgColor)
+ contentView.backgroundColor = .clear
+ selectionStyle = .none
+ bgView.do { v in
+ v.backgroundColor = .color(.cellBg)
+ }
+ titleLabel.do { (v) in
+
+ v.textColor = .color(.first)
+ v.font = .bold(14)
+ v.textAlignment = .left
+ }
+ valueLabel.do { v in
+ v.textColor = .color(.secondary)
+ v.font = .regular(14)
+ v.textAlignment = .right
+ }
+ valueIcon.do { v in
+ v.yc.setCornerRadius(12)
+ v.image = UIImage(named: "logo_2")
+ v.isHidden = true
+ }
+ nextIcon.image = UIImage(named: "arrow_next")
+ }
+
+ override func setupLayout() {
+ bgView.snp.makeConstraints { (m) in
+ m.left.right.equalToSuperview().inset(18)
+ m.top.equalToSuperview()
+ m.bottom.equalToSuperview()
+ }
+ titleLabel.snp.makeConstraints { (m) in
+ m.centerY.equalToSuperview()
+ m.left.equalToSuperview().offset(16)
+ m.height.equalToSuperview()
+ }
+ nextIcon.snp.makeConstraints { (m) in
+ m.width.equalTo(8)
+ m.height.equalTo(12)
+ m.right.equalToSuperview().inset(15)
+ m.centerY.equalToSuperview()
+ }
+ valueIcon.snp.makeConstraints { (m) in
+ m.size.equalTo(24)
+ m.right.equalToSuperview().inset(38)
+ m.centerY.equalToSuperview()
+ }
+ valueLabel.snp.makeConstraints { (m) in
+ m.centerY.equalToSuperview()
+ m.right.equalToSuperview().inset(38)
+ m.height.equalToSuperview()
+ m.left.equalToSuperview().inset(90)
+ }
+ }
+}
diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift
index c0742e0..45e7ad0 100644
--- a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift
+++ b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift
@@ -8,7 +8,7 @@
import UIKit
class UserInfoVC: BaseVC{
let tableView = UITableView(frame: .zero, style: .plain)
- let list:[CustomCellType] = [.avatar,.nickName,.gender,.birthday,.height,.weight,.hobbies,.area]
+ var list:[UserInfoCellType] = []
let imgPicker = ImagePickerManager()
override func viewDidLoad() {
@@ -24,7 +24,7 @@ class UserInfoVC: BaseVC{
v.rowHeight = 52
v.sectionHeaderHeight = 52
v.separatorStyle = .none
- v.register(CustomCell.self, forCellReuseIdentifier: CustomCell.reuseID)
+ v.register(UserInfoCell.self, forCellReuseIdentifier: UserInfoCell.reuseID)
}
view.addSubview(tableView)
}
@@ -38,7 +38,15 @@ class UserInfoVC: BaseVC{
super.viewWillAppear(animated)
refreshUI()
}
-
+ override func setupData() {
+ if CCDevice.isJoy {
+ list = [.avatar,.nickName,.gender,.birthday,.height,.weight,.hobbies,.area]
+ }
+ else{
+ list = [.avatar,.nickName,.gender,.area]
+ }
+ tableView.reloadData()
+ }
}
extension UserInfoVC:UITableViewDelegate,UITableViewDataSource {
@@ -47,7 +55,7 @@ class UserInfoVC: BaseVC{
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = CustomCell.cell(withTableView: tableView, indexPath: indexPath)
+ let cell = UserInfoCell.cell(withTableView: tableView, indexPath: indexPath)
cell.type = list[indexPath.row]
let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
if indexPath.row == 0 {
@@ -85,8 +93,6 @@ class UserInfoVC: BaseVC{
case .hobbies:
hobiesAction()
break
- default:
- break
}
}
}
diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetCell.swift b/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetCell.swift
new file mode 100644
index 0000000..d0bd882
--- /dev/null
+++ b/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetCell.swift
@@ -0,0 +1,319 @@
+//
+// Untitled.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/23.
+//
+
+
+public enum SportSetCellType: Int {
+ case light
+ case voiceReport
+ case lcReport
+ case lcReportRate
+ case xlfdReport
+ case guideReport
+ case guideReportSet
+ case metronome
+ case metronomeRate
+ case metronomeAudio
+ case background
+ case permisson
+ case realData
+
+ var title:String{
+ switch self {
+ case .light:
+ return "ç¯å¸¦è®¾ç½®".l10n
+ case .voiceReport:
+ return "è¯é³ææ¥".l10n
+ case .lcReport:
+ return "éç¨ææ¥".l10n
+ case .lcReportRate:
+ return "éç¨ææ¥é¢æ¬¡".l10n
+ case .xlfdReport:
+ return "è®ç»åæ®µææ¥".l10n
+ case .guideReport:
+ return "æå¯¼ææ¥".l10n
+ case .guideReportSet:
+ return "æå¯¼è¯é³è®¾ç½®".l10n
+ case .metronome:
+ return "èæå¨".l10n
+ case .metronomeRate:
+ return "èæå¨é¢ç".l10n
+ case .metronomeAudio:
+ return "èæå¨å£°é³".l10n
+ case .background:
+ return "åå°ä¿æ¤".l10n
+ case .permisson:
+ return "è¿å¨æé".l10n
+ case .realData:
+ return "è¿å¨å®åµ".l10n
+ }
+ }
+ var detail:String{
+ switch self {
+ case .lcReport:
+ return "å½åå·²è·éç¨ææ¥".l10n
+ case .xlfdReport:
+ return "è®ç»å段å¼å§åç»ææç¤ºé³".l10n
+ case .guideReport:
+ return "è·æ¥è¿ç¨ä¸çæå¯¼è¯é³".l10n
+ case .realData:
+ return "ç»å
æååºæ¬è¿å¨ä¿¡æ¯å®æ¶æ¾ç¤º".l10n
+ default:
+ return ""
+ }
+ }
+ var showSwitch:Bool{
+ switch self {
+ case .voiceReport,.lcReport,.xlfdReport,.guideReport,.metronome,.background,.realData:
+ return true
+ default:
+ return false
+ }
+ }
+}
+
+protocol SportSetCellDelegate:NSObject{
+ func sportSetCellSwitchAction(cell:SportSetCell)
+}
+class SportSetCell: BaseTableViewCell {
+ let bgView = UIView()
+ let titleLabel = UILabel()
+ let detailLabel = UILabel()
+ let valueLabel = UILabel()
+ let iSwitch = UISwitch()
+ let nextIcon = UIImageView(image: UIImage(named: "arrow_next"))
+ let line = UIView()
+ weak var delegate:SportSetCellDelegate?
+ var model:SportSetModel!{
+ didSet{
+ switch type {
+ case .light:
+ break
+ case .voiceReport:
+ iSwitch.isOn = model.voiceReport
+ case .lcReport:
+ iSwitch.isOn = model.lcReport
+
+ case .lcReportRate:
+ valueLabel.text = model.lcReportRate
+ case .xlfdReport:
+ iSwitch.isOn = model.xlfdReport
+ case .guideReport:
+ iSwitch.isOn = model.guideReport
+ case .guideReportSet:
+ valueLabel.text = model.guideReportSet
+ case .metronome:
+ iSwitch.isOn = model.metronome
+ case .metronomeRate:
+ valueLabel.text = model.metronomeRate
+ case .metronomeAudio:
+ valueLabel.text = model.metronomeAudio
+ case .background:
+ iSwitch.isOn = model.background
+ case .permisson:
+ break
+ case .realData:
+ iSwitch.isOn = model.realData
+ }
+
+ if type == .lcReport {
+ line.isHidden = model.lcReport
+ }
+ else if type == .guideReport {
+ line.isHidden = model.guideReport
+ }
+ else if type == .metronome {
+ line.isHidden = model.metronome
+ }
+ else if type == .permisson || type == .realData || type == .metronomeRate{
+ line.isHidden = true
+ }
+ else{
+ line.isHidden = false
+ }
+ }
+ }
+
+ var type:SportSetCellType = .light{
+ didSet{
+ titleLabel.text = type.title
+ detailLabel.text = type.detail
+ iSwitch.isHidden = !type.showSwitch
+ nextIcon.isHidden = !iSwitch.isHidden
+
+ if type.detail.isEmpty {
+ titleLabel.snp.remakeConstraints { (m) in
+ m.centerY.equalToSuperview()
+ m.left.equalToSuperview().offset(16)
+ }
+ }
+ else{
+ titleLabel.snp.remakeConstraints { (m) in
+ m.top.equalToSuperview().inset(16)
+ m.left.equalToSuperview().offset(16)
+ }
+ }
+
+ if type == .metronomeRate || type == .metronomeAudio {
+ valueLabel.isHidden = false
+ }
+ else{
+ valueLabel.isHidden = true
+ }
+ }
+ }
+
+
+ override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
+ super.init(style: style, reuseIdentifier: reuseIdentifier)
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+ override func setupViews() {
+ contentView.addSubview(bgView)
+ bgView.addSubviews([titleLabel,detailLabel,iSwitch,nextIcon,valueLabel,line])
+
+ backgroundColor = .color(.bgColor)
+ contentView.backgroundColor = .clear
+ selectionStyle = .none
+ bgView.do { v in
+ v.backgroundColor = .color(.cellBg)
+ v.yc.addTap(target: self, action: #selector(tapAction))
+ }
+ titleLabel.do { (v) in
+ v.textColor = .color(.first)
+ v.font = .bold(14)
+ v.textAlignment = .left
+ }
+ detailLabel.do { (v) in
+ v.textColor = .color(.secondary)
+ v.font = .regular(10)
+ v.textAlignment = .left
+ }
+ iSwitch.do { v in
+// v.backgroundColor = .red
+ v.addTarget(self, action: #selector(swicthAction), for: .valueChanged)
+ }
+ valueLabel.do { v in
+ v.textColor = .color(.secondary)
+ v.font = .regular(14)
+ v.textAlignment = .right
+ }
+ line.do { v in
+ v.backgroundColor = .color(.separateLine)
+ }
+ }
+
+ override func setupLayout() {
+ bgView.snp.makeConstraints { (m) in
+ m.left.right.equalToSuperview().inset(18)
+ m.top.equalToSuperview()
+ m.bottom.equalToSuperview()
+ }
+ titleLabel.snp.makeConstraints { (m) in
+ m.top.equalToSuperview().inset(16)
+ m.left.equalToSuperview().offset(16)
+ }
+ detailLabel.snp.makeConstraints { (m) in
+ m.bottom.equalToSuperview().inset(16)
+ m.left.equalToSuperview().offset(16)
+ }
+ iSwitch.snp.makeConstraints { (m) in
+ m.right.equalToSuperview().inset(15)
+ m.centerY.equalToSuperview()
+ }
+ nextIcon.snp.makeConstraints { (m) in
+ m.width.equalTo(8)
+ m.height.equalTo(12)
+ m.right.equalToSuperview().inset(15)
+ m.centerY.equalToSuperview()
+ }
+ valueLabel.snp.makeConstraints { (m) in
+ m.centerY.equalToSuperview()
+ m.right.equalToSuperview().inset(38)
+ m.height.equalToSuperview()
+ m.left.equalToSuperview().inset(90)
+ }
+ line.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(18)
+ make.bottom.equalToSuperview()
+ make.height.equalTo(0.4)
+ }
+ }
+ @objc func tapAction(){
+ switch type {
+ case .lcReportRate:
+ lcReportAction()
+ break
+ case .guideReportSet:
+ guideReportSetAction()
+ break
+ case .metronomeRate:
+ metronomeRateAction()
+ break
+ case .metronomeAudio:
+ metronomeAudioAction()
+ break
+
+ case .background:
+ backgroundAction()
+ break
+ default:
+ break
+ }
+ }
+ func lcReportAction(){
+ let list = Array(stride(from: 500, to: 1500, by: 500)).map { String($0) + "m" }
+ let v = CustomPicker2(title: "éæ©ææ¥é´è·".l10n, list:list )
+ v.selectedIndex = 50
+ v.show()
+ v.didSelected = {[weak self] (index,value) in
+ guard let self = self else { return }
+
+ }
+ }
+ func guideReportSetAction(){
+ let list = [
+ CustomPickerModel(title: "详ç»".l10n, detail: "1å
¬éé
éãæ»å¹³åé
éã1å
¬éç¨æ¶ãæ»è¿å¨æ¶é¿".l10n),
+ CustomPickerModel(title: "ç®æ´".l10n, detail: "1å
¬éé
éã1å
¬éç¨æ¶".l10n),
+ CustomPickerModel(title: "æç®".l10n, detail: "æ»è·ç¦»ãæ»æ¶é¿".l10n)]
+ let v = CustomPicker4(title: "æå¯¼è¯é³å¯åº¦".l10n, list:list )
+ v.selectedIndex = 0
+ v.show()
+ v.didSelected = {[weak self] (index,value) in
+ guard let self = self else { return }
+
+ }
+ }
+ func metronomeRateAction(){
+ let list = Array(stride(from: 100, to: 250, by: 1)).map { String($0) + "次/åé".l10n }
+ let v = CustomPicker2(title: "èæå¨é¢ç".l10n, list:list )
+ v.selectedIndex = 50
+ v.show()
+ v.didSelected = {[weak self] (index,value) in
+ guard let self = self else { return }
+
+ }
+ }
+ func metronomeAudioAction(){
+ let list = ["é»è®¤".l10n,"æ¸
è".l10n,"éå»".l10n]
+ let v = CustomPicker2(title: "èæå¨å£°é³".l10n, list:list )
+ v.selectedIndex = 50
+ v.show()
+ v.didSelected = {[weak self] (index,value) in
+ guard let self = self else { return }
+
+ }
+ }
+ func backgroundAction(){
+
+ }
+ @objc func swicthAction(){
+ delegate?.sportSetCellSwitchAction(cell: self)
+ }
+}
diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetModel.swift b/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetModel.swift
new file mode 100644
index 0000000..0310fa4
--- /dev/null
+++ b/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetModel.swift
@@ -0,0 +1,22 @@
+//
+// SportSetModel.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/30.
+//
+
+class SportSetModel{
+ var light = ""
+ var voiceReport = true
+ var lcReport = false
+ var lcReportRate = ""
+ var xlfdReport = false
+ var guideReport = false
+ var guideReportSet = ""
+ var metronome = false
+ var metronomeRate = ""
+ var metronomeAudio = ""
+ var background = false
+ var permisson = ""
+ var realData = false
+}
diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetVC.swift b/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetVC.swift
index 49c1ad1..fa88a06 100644
--- a/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetVC.swift
+++ b/ShenYin/ShenYin/UI/Sport/Sport/Set/SportSetVC.swift
@@ -9,7 +9,8 @@
import UIKit
class SportSetVC: BaseVC{
let tableView = UITableView(frame: .zero, style: .plain)
- let list:[(title:String,list:[CustomCellType])] = [("".l10n,[.light,.voiceReport,.lcReport,.xlfdReport,.guideReport,.metronome,.metronomeRate,.metronomeAudio,.background,.permisson]),("ç»é设置".l10n,[.realData]),]
+ var list:[[SportSetCellType]] = [[.light],[.voiceReport],[.lcReport],[.xlfdReport],[.guideReport],[.metronome],[.background],[.permisson],[.realData]]
+ let model = SportSetModel()
override func viewDidLoad() {
super.viewDidLoad()
@@ -21,10 +22,14 @@ class SportSetVC: BaseVC{
v.backgroundColor = .color(.bgColor)
v.delegate = self
v.dataSource = self
- v.rowHeight = 52
+ v.rowHeight = 65
v.sectionHeaderHeight = 52
v.separatorStyle = .none
- v.register(CustomCell.self, forCellReuseIdentifier: CustomCell.reuseID)
+ v.register(SportSetCell.self, forCellReuseIdentifier: SportSetCell.reuseID)
+ v.register(CustomSectionHeader.self, forHeaderFooterViewReuseIdentifier: CustomSectionHeader.reuseID)
+ if #available(iOS 15.0, *) {
+ tableView.sectionHeaderTopPadding = 0
+ }
}
view.addSubview(tableView)
@@ -48,46 +53,95 @@ extension SportSetVC:UITableViewDelegate,UITableViewDataSource {
return list.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return list[section].list.count
+ return list[section].count
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
- let view = CustomSectionHeader.header(withTableView: tableView)
- view.titleLabel.text = list[section].title
- view.titleLabel.textColor = .color(.secondary)
- return view
+ if section == list.count - 1 {
+ let view = CustomSectionHeader.header(withTableView: tableView)
+ view.titleLabel.text = "ç»é设置".l10n
+ view.titleLabel.textColor = .color(.secondary)
+ return view
+ }
+ else{
+ return nil
+ }
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
- if list[section].title.isEmpty {
- return 0
+ if section == list.count - 1 {
+ return 52
}
else{
- return 52
+ return 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = CustomCell.cell(withTableView: tableView, indexPath: indexPath)
- let list = list[indexPath.section].list
- cell.type = list[indexPath.row]
- let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
- if indexPath.row == 0 {
+ let cell = SportSetCell.cell(withTableView: tableView, indexPath: indexPath)
+ cell.type = list[indexPath.section][indexPath.row]
+ cell.model = model
+ cell.delegate = self
+ let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 65)
+ if cell.type == .light {
cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12))
}
- else if indexPath.row == list.count - 1{
- cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 12, height: 12))
- }
- else{
- cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
- }
- if list.count == 1 {
- cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 12, height: 12))
+ else {
+ if cell.type == .realData{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 12, height: 12))
+ }
+ else if cell.type == .permisson {
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 12, height: 12))
+ }
+ else{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+ }
}
+
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- let data = list[indexPath.section].list[indexPath.row]
+ let data = list[indexPath.section][indexPath.row]
switch data {
default:
break
}
}
}
+extension SportSetVC:SportSetCellDelegate {
+ func sportSetCellSwitchAction(cell:SportSetCell){
+ let state = cell.iSwitch.isOn
+ switch cell.type {
+ case .voiceReport:
+ model.voiceReport = state
+ tableView.reloadData()
+ break
+ case .lcReport:
+ model.lcReport = state
+ list[2] = state ? [.lcReport,.lcReportRate]:[.lcReport]
+ tableView.reloadData()
+ break
+ case .xlfdReport:
+ model.xlfdReport = state
+ tableView.reloadData()
+ break
+ case .guideReport:
+ model.guideReport = state
+ list[4] = state ? [.guideReport,.guideReportSet]:[.guideReport]
+ tableView.reloadData()
+ break
+ case .metronome:
+ model.metronome = state
+ list[5] = state ? [.metronome,.metronomeRate,.metronomeAudio]:[.metronome]
+ tableView.reloadData()
+ break
+ case .background:
+ model.background = state
+ tableView.reloadData()
+ break
+ case .realData:
+ model.realData = state
+ tableView.reloadData()
+ break
+ default:
+ break
+ }
+ }
+}
diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Set/SwitchCell.swift b/ShenYin/ShenYin/UI/Sport/Sport/Set/SwitchCell.swift
deleted file mode 100644
index b0501b7..0000000
--- a/ShenYin/ShenYin/UI/Sport/Sport/Set/SwitchCell.swift
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-// Untitled.swift
-// ShenYin
-//
-// Created by liangshi on 2026/1/23.
-//
-
-
diff --git a/ShenYin/ShenYin/UI/common/pop/CustomPicker4.swift b/ShenYin/ShenYin/UI/common/pop/CustomPicker4.swift
new file mode 100644
index 0000000..4873072
--- /dev/null
+++ b/ShenYin/ShenYin/UI/common/pop/CustomPicker4.swift
@@ -0,0 +1,207 @@
+//
+// CustomPicker44.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/30.
+//
+
+import UIKit
+
+class CustomPickerModel{
+ var title = ""
+ var detail = ""
+ init(title: String = "", detail: String = "") {
+ self.title = title
+ self.detail = detail
+ }
+}
+
+class CustomPicker4: BasePresentView {
+ private let titleLabel = UILabel()
+ private let btn = UIButton(type: .custom)
+ private let tableView = UITableView(frame: .zero, style: .plain)
+ var list:[CustomPickerModel] = []
+// var disableTitle:String = ""{
+// didSet{
+// tableView.reloadData()
+// }
+// }
+ var selectedIndex = 0{
+ didSet{
+ tableView.reloadData()
+ }
+ }
+ var didSelected: ((Int,CustomPickerModel)->Void)?
+ private var title:String = ""
+
+ init(title:String,list:[CustomPickerModel]) {
+ self.title = title
+ self.list = list
+ var h = CGFloat(50 + list.count*65) + kSafeBtm
+
+ if h > kScreenHei - kSafeBtm - kCusNavBtm - 50{
+ h = kScreenHei - kSafeBtm - kCusNavBtm - 50
+ tableView.isScrollEnabled = true
+ }
+ else{
+ tableView.isScrollEnabled = false
+ }
+ super.init(contentHeight:h)
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func setupSubView() {
+ super.setupSubView()
+ contentView.addSubviews([titleLabel,btn,tableView])
+ }
+ override func setupLayout() {
+ super.setupLayout()
+ titleLabel.snp.makeConstraints { (m) in
+ m.top.equalToSuperview()
+ m.left.right.equalToSuperview().inset(60)
+ m.height.equalTo(50)
+ }
+ btn.snp.makeConstraints { (m) in
+ m.centerY.equalTo(titleLabel)
+ m.right.equalToSuperview()
+ m.size.equalTo(60)
+ }
+ tableView.snp.makeConstraints { make in
+ make.left.right.bottom.equalToSuperview()
+ make.top.equalToSuperview().inset(50)
+ }
+ }
+
+ override func setupStyle() {
+ super.setupStyle()
+ contentView.backgroundColor = .color(.cellBg)
+ titleLabel.do { (v) in
+ v.textColor = .color(.secondary)
+ v.font = .semiBold(16)
+ v.textAlignment = .center
+ v.text = title
+ }
+ btn.do { v in
+ v.setImage(UIImage(named: "close_icon"), for: .normal)
+ v.addTarget(self, action: #selector(closeAction), for: .touchUpInside)
+ }
+ tableView.do { v in
+ v.backgroundColor = .color(.cellBg)
+ v.delegate = self
+ v.dataSource = self
+ v.rowHeight = 65
+ v.separatorStyle = .none
+ v.register(CustomButton.SelectCell.self, forCellReuseIdentifier: CustomButton.SelectCell.reuseID)
+ }
+ }
+ @objc func closeAction(){
+ hide()
+ }
+}
+extension CustomPicker4:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return list.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = CustomButton.SelectCell.cell(withTableView: tableView, indexPath: indexPath)
+ cell.titleLabel.text = list[indexPath.row].title
+ cell.detailLabel.text = list[indexPath.row].detail
+ cell.selectedIcon.isHidden = selectedIndex != indexPath.row
+// cell.enable = list[indexPath.row] != disableTitle
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+// if list[indexPath.row] == disableTitle {
+// return
+// }
+ selectedIndex = indexPath.row
+ tableView.reloadData()
+ didSelected?(selectedIndex,list[selectedIndex])
+ hide()
+ }
+}
+
+fileprivate extension CustomButton {
+ class SelectCell: BaseTableViewCell {
+ let bgView = UIView()
+ let titleLabel = UILabel()
+ let detailLabel = UILabel()
+ let selectedIcon = UIImageView()
+ let line = UIView()
+
+ var enable:Bool = true{
+ didSet{
+ if enable{
+ titleLabel.textColor = .color(.first)
+ }
+ else{
+ titleLabel.textColor = .color(.secondary)
+ }
+ }
+ }
+ override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
+ super.init(style: style, reuseIdentifier: reuseIdentifier)
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+ override func setupViews() {
+ contentView.addSubview(bgView)
+ bgView.addSubviews([titleLabel,detailLabel,selectedIcon,line])
+
+ backgroundColor = .color(.bgColor)
+ contentView.backgroundColor = .clear
+ selectionStyle = .none
+ bgView.do { v in
+ v.backgroundColor = .color(.cellBg)
+ }
+ titleLabel.do { (v) in
+ v.textColor = .color(.first)
+ v.font = .bold(14)
+ v.textAlignment = .left
+ }
+ detailLabel.do { (v) in
+ v.textColor = .color(.secondary)
+ v.font = .regular(10)
+ v.textAlignment = .left
+ }
+ selectedIcon.image = UIImage(named: "cell_selected")
+ line.do { v in
+ v.backgroundColor = .color(.separateLine)
+ }
+ }
+
+ override func setupLayout() {
+ bgView.snp.makeConstraints { (m) in
+ m.left.right.equalToSuperview()
+ m.top.equalToSuperview()
+ m.bottom.equalToSuperview()
+ }
+ selectedIcon.snp.makeConstraints { (m) in
+ m.width.equalTo(21)
+ m.height.equalTo(16)
+ m.right.equalToSuperview().inset(21)
+ m.centerY.equalToSuperview()
+ }
+ titleLabel.snp.makeConstraints { (m) in
+ m.top.equalToSuperview().inset(16)
+ m.left.equalToSuperview().offset(24)
+ }
+ detailLabel.snp.makeConstraints { (m) in
+ m.bottom.equalToSuperview().inset(16)
+ m.left.equalToSuperview().offset(24)
+ }
+ line.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(18)
+ make.bottom.equalToSuperview()
+ make.height.equalTo(0.4)
+ }
+ }
+ }
+
+}
diff --git a/ShenYin/playboy copy-Info.plist b/ShenYin/playboy copy-Info.plist
new file mode 100644
index 0000000..9f4fb07
--- /dev/null
+++ b/ShenYin/playboy copy-Info.plist
@@ -0,0 +1,59 @@
+
+
+
+
+ CFBundleURLTypes
+
+
+ CFBundleTypeRole
+ Editor
+ CFBundleURLName
+ weixin
+ CFBundleURLSchemes
+
+ wxf19317f23b00d8ab
+
+
+
+ LSApplicationQueriesSchemes
+
+ weixin
+ weixinURLParamsAPI
+ weixinULAPI
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneConfigurationName
+ Default Configuration
+ UISceneDelegateClassName
+ $(PRODUCT_MODULE_NAME).SceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+ UIBackgroundModes
+
+ bluetooth-peripheral
+ bluetooth-central
+ audio
+
+ UIStatusBarStyle
+ UIStatusBarStyleLightContent
+ UIViewControllerBasedStatusBarAppearance
+
+
+
diff --git a/ShenYin/podfile b/ShenYin/podfile
index 4e4b133..52aaa18 100644
--- a/ShenYin/podfile
+++ b/ShenYin/podfile
@@ -51,9 +51,9 @@ target 'ShenYin' do
pod 'HorizonCalendar'#æ¥å
#é«å¾·å°å¾
-# pod 'AMap3DMap-NO-IDFA', '10.0.700'
-# pod 'AMapLocation-NO-IDFA'
-# pod 'AMapSearch-NO-IDFA', '9.7.0'
+ pod 'AMap3DMap-NO-IDFA', '10.0.700'
+ pod 'AMapLocation-NO-IDFA'
+ pod 'AMapSearch-NO-IDFA', '9.7.0'
end