杨锴
2024-08-22 5ca691ec52cb4bb64841b0d85252af762e48c2ca
fix UI
29个文件已添加
11个文件已修改
2139 ■■■■■ 已修改文件
XQMuse.xcodeproj/project.pbxproj 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/HomeVC.swift 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/PaymentOrderVC.xib 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/MeVC.swift 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/TCell/ContactCustomerTCell.swift 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/TCell/ContactCustomerTCell.xib 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/TCell/SpendingDetailContentTCell.swift 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/TCell/SpendingDetailContentTCell.xib 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/ContactCustomerVC.swift 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/ContactCustomerVC.xib 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/MyCommentListVC.swift 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SpendingDetailContentVC.swift 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SpendingDetailHeaderVC.swift 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SpendingDetailInfoVC.swift 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SpendingDetailInfoVC.xib 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SpendingDetailMenuVC.swift 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SpendingDetailVC.swift 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/UserProfileVC.swift 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/WalletRechargeVC.swift 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/WalletRechargeVC.xib 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/WalletVC.swift 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/WalletVC.xib 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/WatchHistoryDetailVC.swift 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/WatchHistoryVC.swift 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/WatchHistoryVC.xib 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/BitrhdayPickerView.swift 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/CommonAlertSheetView.swift 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/CommonAlertSheetView.xib 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse.xcodeproj/project.pbxproj
@@ -19,6 +19,13 @@
        130B765A2C6C4963006371AF /* HomeRelaxVoiceCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130B76582C6C4963006371AF /* HomeRelaxVoiceCCell.xib */; };
        130B765D2C6C4C33006371AF /* HomeItemListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130B765B2C6C4C33006371AF /* HomeItemListVC.swift */; };
        130B765E2C6C4C33006371AF /* HomeItemListVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130B765C2C6C4C33006371AF /* HomeItemListVC.xib */; };
        130C07032C76D10B00ADB098 /* SpendingDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130C07022C76D10B00ADB098 /* SpendingDetailVC.swift */; };
        130C07052C76D1A000ADB098 /* SpendingDetailHeaderVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130C07042C76D1A000ADB098 /* SpendingDetailHeaderVC.swift */; };
        130C07072C76D1BF00ADB098 /* SpendingDetailMenuVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130C07062C76D1BF00ADB098 /* SpendingDetailMenuVC.swift */; };
        130C07092C76D51900ADB098 /* SpendingDetailHeaderVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130C07082C76D51900ADB098 /* SpendingDetailHeaderVC.xib */; };
        130C070B2C76D8F200ADB098 /* SpendingDetailContentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130C070A2C76D8F200ADB098 /* SpendingDetailContentVC.swift */; };
        130C07122C76DA0500ADB098 /* SpendingDetailContentTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130C07112C76DA0500ADB098 /* SpendingDetailContentTCell.xib */; };
        130C07132C76DA0500ADB098 /* SpendingDetailContentTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130C07102C76DA0500ADB098 /* SpendingDetailContentTCell.swift */; };
        130ED7E72C6AEF5900D0736E /* Home_Style_4_TCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130ED7E52C6AEF5900D0736E /* Home_Style_4_TCell.swift */; };
        130ED7E82C6AEF5900D0736E /* Home_Style_4_TCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130ED7E62C6AEF5900D0736E /* Home_Style_4_TCell.xib */; };
        130ED7ED2C6AF05C00D0736E /* Home_Style_4_Inner_CCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130ED7EB2C6AF05C00D0736E /* Home_Style_4_Inner_CCell.xib */; };
@@ -46,16 +53,29 @@
        1336EFA52C6DEB550075E070 /* HoverHeaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1336EFA42C6DEB550075E070 /* HoverHeaderFlowLayout.swift */; };
        1336EFA72C6DEC640075E070 /* PaymentOrderResultTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1336EFA62C6DEC640075E070 /* PaymentOrderResultTopView.swift */; };
        1336EFA92C6DEC6B0075E070 /* PaymentOrderResultTopView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1336EFA82C6DEC6B0075E070 /* PaymentOrderResultTopView.xib */; };
        1338A6DD2C76DD5E006CDD15 /* SpendingDetailInfoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1338A6DB2C76DD5E006CDD15 /* SpendingDetailInfoVC.swift */; };
        1338A6DE2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1338A6DC2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib */; };
        13391E022C73334000B9513F /* PavilionDetailVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13391E012C73334000B9513F /* PavilionDetailVC.xib */; };
        13391E032C73334000B9513F /* PavilionDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13391E002C73334000B9513F /* PavilionDetailVC.swift */; };
        134783CF2C6C86EC0096C736 /* PlaySettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134783CE2C6C86EC0096C736 /* PlaySettingView.swift */; };
        134783D12C6C86F40096C736 /* PlaySettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134783D02C6C86F40096C736 /* PlaySettingView.xib */; };
        134803D32C76E29E00F4FDDA /* MyCommentListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134803D22C76E29E00F4FDDA /* MyCommentListVC.swift */; };
        134803D62C76E3E000F4FDDA /* WatchHistoryVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134803D42C76E3E000F4FDDA /* WatchHistoryVC.swift */; };
        134803D72C76E3E000F4FDDA /* WatchHistoryVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134803D52C76E3E000F4FDDA /* WatchHistoryVC.xib */; };
        134803D92C76ED6400F4FDDA /* WatchHistoryDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134803D82C76ED6400F4FDDA /* WatchHistoryDetailVC.swift */; };
        134803DC2C7707BA00F4FDDA /* ContactCustomerVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134803DA2C7707BA00F4FDDA /* ContactCustomerVC.swift */; };
        134803DD2C7707BA00F4FDDA /* ContactCustomerVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134803DB2C7707BA00F4FDDA /* ContactCustomerVC.xib */; };
        134A45322C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134A45302C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift */; };
        134A45352C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134A45342C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift */; };
        134A45392C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134A45372C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift */; };
        134A453A2C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134A45382C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib */; };
        134CC7E02C73283700EAEFB7 /* PavilionSearchVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134CC7DF2C73283700EAEFB7 /* PavilionSearchVC.xib */; };
        134CC7E12C73283700EAEFB7 /* PavilionSearchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134CC7DE2C73283700EAEFB7 /* PavilionSearchVC.swift */; };
        13649F9A2C7709CD00F4E0EE /* ContactCustomerTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13649F992C7709CD00F4E0EE /* ContactCustomerTCell.xib */; };
        13649F9B2C7709CD00F4E0EE /* ContactCustomerTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13649F982C7709CD00F4E0EE /* ContactCustomerTCell.swift */; };
        13649F9E2C770C9C00F4E0EE /* ContactCustomerDetailVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13649F9D2C770C9C00F4E0EE /* ContactCustomerDetailVC.xib */; };
        13649F9F2C770C9C00F4E0EE /* ContactCustomerDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13649F9C2C770C9C00F4E0EE /* ContactCustomerDetailVC.swift */; };
        136C7C7D2C7715C9004540CD /* BitrhdayPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136C7C7C2C7715C9004540CD /* BitrhdayPickerView.swift */; };
        137175C62C6C3C4700B38EF1 /* SourceHanSansCN-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 137175C52C6C3C4700B38EF1 /* SourceHanSansCN-Regular.otf */; };
        137175C82C6C3C6D00B38EF1 /* Agenda-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 137175C72C6C3C6D00B38EF1 /* Agenda-Light.otf */; };
        137175CB2C6C412A00B38EF1 /* BackgroundVoiceVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 137175C92C6C412A00B38EF1 /* BackgroundVoiceVC.swift */; };
@@ -195,6 +215,13 @@
        130B76582C6C4963006371AF /* HomeRelaxVoiceCCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeRelaxVoiceCCell.xib; sourceTree = "<group>"; };
        130B765B2C6C4C33006371AF /* HomeItemListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeItemListVC.swift; sourceTree = "<group>"; };
        130B765C2C6C4C33006371AF /* HomeItemListVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeItemListVC.xib; sourceTree = "<group>"; };
        130C07022C76D10B00ADB098 /* SpendingDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpendingDetailVC.swift; sourceTree = "<group>"; };
        130C07042C76D1A000ADB098 /* SpendingDetailHeaderVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpendingDetailHeaderVC.swift; sourceTree = "<group>"; };
        130C07062C76D1BF00ADB098 /* SpendingDetailMenuVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpendingDetailMenuVC.swift; sourceTree = "<group>"; };
        130C07082C76D51900ADB098 /* SpendingDetailHeaderVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SpendingDetailHeaderVC.xib; sourceTree = "<group>"; };
        130C070A2C76D8F200ADB098 /* SpendingDetailContentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpendingDetailContentVC.swift; sourceTree = "<group>"; };
        130C07102C76DA0500ADB098 /* SpendingDetailContentTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpendingDetailContentTCell.swift; sourceTree = "<group>"; };
        130C07112C76DA0500ADB098 /* SpendingDetailContentTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SpendingDetailContentTCell.xib; sourceTree = "<group>"; };
        130ED7E52C6AEF5900D0736E /* Home_Style_4_TCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Home_Style_4_TCell.swift; sourceTree = "<group>"; };
        130ED7E62C6AEF5900D0736E /* Home_Style_4_TCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Home_Style_4_TCell.xib; sourceTree = "<group>"; };
        130ED7EB2C6AF05C00D0736E /* Home_Style_4_Inner_CCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Home_Style_4_Inner_CCell.xib; sourceTree = "<group>"; };
@@ -222,16 +249,29 @@
        1336EFA42C6DEB550075E070 /* HoverHeaderFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoverHeaderFlowLayout.swift; sourceTree = "<group>"; };
        1336EFA62C6DEC640075E070 /* PaymentOrderResultTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentOrderResultTopView.swift; sourceTree = "<group>"; };
        1336EFA82C6DEC6B0075E070 /* PaymentOrderResultTopView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PaymentOrderResultTopView.xib; sourceTree = "<group>"; };
        1338A6DB2C76DD5E006CDD15 /* SpendingDetailInfoVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpendingDetailInfoVC.swift; sourceTree = "<group>"; };
        1338A6DC2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SpendingDetailInfoVC.xib; sourceTree = "<group>"; };
        13391E002C73334000B9513F /* PavilionDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PavilionDetailVC.swift; sourceTree = "<group>"; };
        13391E012C73334000B9513F /* PavilionDetailVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PavilionDetailVC.xib; sourceTree = "<group>"; };
        134783CE2C6C86EC0096C736 /* PlaySettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaySettingView.swift; sourceTree = "<group>"; };
        134783D02C6C86F40096C736 /* PlaySettingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PlaySettingView.xib; sourceTree = "<group>"; };
        134803D22C76E29E00F4FDDA /* MyCommentListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyCommentListVC.swift; sourceTree = "<group>"; };
        134803D42C76E3E000F4FDDA /* WatchHistoryVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchHistoryVC.swift; sourceTree = "<group>"; };
        134803D52C76E3E000F4FDDA /* WatchHistoryVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WatchHistoryVC.xib; sourceTree = "<group>"; };
        134803D82C76ED6400F4FDDA /* WatchHistoryDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchHistoryDetailVC.swift; sourceTree = "<group>"; };
        134803DA2C7707BA00F4FDDA /* ContactCustomerVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactCustomerVC.swift; sourceTree = "<group>"; };
        134803DB2C7707BA00F4FDDA /* ContactCustomerVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ContactCustomerVC.xib; sourceTree = "<group>"; };
        134A45302C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseVCOfficalCommentVC.swift; sourceTree = "<group>"; };
        134A45342C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseVCTeacherSpecialVC.swift; sourceTree = "<group>"; };
        134A45372C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseOfficalCommendTopCCell.swift; sourceTree = "<group>"; };
        134A45382C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseOfficalCommendTopCCell.xib; sourceTree = "<group>"; };
        134CC7DE2C73283700EAEFB7 /* PavilionSearchVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PavilionSearchVC.swift; sourceTree = "<group>"; };
        134CC7DF2C73283700EAEFB7 /* PavilionSearchVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PavilionSearchVC.xib; sourceTree = "<group>"; };
        13649F982C7709CD00F4E0EE /* ContactCustomerTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactCustomerTCell.swift; sourceTree = "<group>"; };
        13649F992C7709CD00F4E0EE /* ContactCustomerTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ContactCustomerTCell.xib; sourceTree = "<group>"; };
        13649F9C2C770C9C00F4E0EE /* ContactCustomerDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactCustomerDetailVC.swift; sourceTree = "<group>"; };
        13649F9D2C770C9C00F4E0EE /* ContactCustomerDetailVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ContactCustomerDetailVC.xib; sourceTree = "<group>"; };
        136C7C7C2C7715C9004540CD /* BitrhdayPickerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BitrhdayPickerView.swift; sourceTree = "<group>"; };
        137175C52C6C3C4700B38EF1 /* SourceHanSansCN-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SourceHanSansCN-Regular.otf"; sourceTree = "<group>"; };
        137175C72C6C3C6D00B38EF1 /* Agenda-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Agenda-Light.otf"; sourceTree = "<group>"; };
        137175C92C6C412A00B38EF1 /* BackgroundVoiceVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundVoiceVC.swift; sourceTree = "<group>"; };
@@ -413,6 +453,21 @@
                13271D842C75EF8200DE1328 /* AddBankInfoVC.xib */,
                13EA70022C75FA16005DF280 /* WalletRechargeVC.swift */,
                13EA70032C75FA16005DF280 /* WalletRechargeVC.xib */,
                130C07022C76D10B00ADB098 /* SpendingDetailVC.swift */,
                130C07042C76D1A000ADB098 /* SpendingDetailHeaderVC.swift */,
                130C07062C76D1BF00ADB098 /* SpendingDetailMenuVC.swift */,
                130C07082C76D51900ADB098 /* SpendingDetailHeaderVC.xib */,
                130C070A2C76D8F200ADB098 /* SpendingDetailContentVC.swift */,
                1338A6DB2C76DD5E006CDD15 /* SpendingDetailInfoVC.swift */,
                1338A6DC2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib */,
                134803D22C76E29E00F4FDDA /* MyCommentListVC.swift */,
                134803D42C76E3E000F4FDDA /* WatchHistoryVC.swift */,
                134803D52C76E3E000F4FDDA /* WatchHistoryVC.xib */,
                134803D82C76ED6400F4FDDA /* WatchHistoryDetailVC.swift */,
                134803DA2C7707BA00F4FDDA /* ContactCustomerVC.swift */,
                134803DB2C7707BA00F4FDDA /* ContactCustomerVC.xib */,
                13649F9C2C770C9C00F4E0EE /* ContactCustomerDetailVC.swift */,
                13649F9D2C770C9C00F4E0EE /* ContactCustomerDetailVC.xib */,
            );
            path = VC;
            sourceTree = "<group>";
@@ -740,6 +795,10 @@
                13A0A8AD2C74757200DF08B6 /* MessageTCell.xib */,
                13FCCE242C75E8C400AC7E02 /* BankInfoTCell.swift */,
                13FCCE252C75E8C400AC7E02 /* BankInfoTCell.xib */,
                130C07102C76DA0500ADB098 /* SpendingDetailContentTCell.swift */,
                130C07112C76DA0500ADB098 /* SpendingDetailContentTCell.xib */,
                13649F982C7709CD00F4E0EE /* ContactCustomerTCell.swift */,
                13649F992C7709CD00F4E0EE /* ContactCustomerTCell.xib */,
            );
            path = TCell;
            sourceTree = "<group>";
@@ -747,6 +806,7 @@
        13D256B52C6C68EB006FC2D7 /* View */ = {
            isa = PBXGroup;
            children = (
                136C7C7C2C7715C9004540CD /* BitrhdayPickerView.swift */,
                13F24E432C75901500D2BA90 /* CommonAlertView.swift */,
                13F24E442C75901600D2BA90 /* CommonAlertView.xib */,
                13A0A8A42C746B5600DF08B6 /* CommonDatePickerView.swift */,
@@ -898,14 +958,17 @@
                137ABE352C6B3F64003A91C5 /* ForgotPasswordVC.xib in Resources */,
                13A0A8A52C746B5600DF08B6 /* CommonDatePickerView.xib in Resources */,
                13A37A012C75C1DE0038D5C8 /* LevelVC.xib in Resources */,
                130C07092C76D51900ADB098 /* SpendingDetailHeaderVC.xib in Resources */,
                138FE0DF2C757B2A00A964E8 /* BindPhone_1_VC.xib in Resources */,
                13FB6D842C6EEFE900A0685D /* MenuListTCell.xib in Resources */,
                138F0C362C7597CA0072A16C /* HelpCenterVC.xib in Resources */,
                134803D72C76E3E000F4FDDA /* WatchHistoryVC.xib in Resources */,
                1377768E2C6AFD25004FF994 /* LoginVC.xib in Resources */,
                134CC7E02C73283700EAEFB7 /* PavilionSearchVC.xib in Resources */,
                130913EE2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.xib in Resources */,
                13CBCCE02C74793D00C67701 /* NoticeCenterSysDetailVC.xib in Resources */,
                130ED7E82C6AEF5900D0736E /* Home_Style_4_TCell.xib in Resources */,
                13649F9A2C7709CD00F4E0EE /* ContactCustomerTCell.xib in Resources */,
                13391E022C73334000B9513F /* PavilionDetailVC.xib in Resources */,
                13EC08902C74990B00E00128 /* EmptyCCell.xib in Resources */,
                1377B4172C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.xib in Resources */,
@@ -924,6 +987,7 @@
                137175C82C6C3C6D00B38EF1 /* Agenda-Light.otf in Resources */,
                13CBCCE42C747C3D00C67701 /* NoticeCenterUserRepeaceDetailVC.xib in Resources */,
                13985DA22C69B2440046B6DC /* Base in Resources */,
                13649F9E2C770C9C00F4E0EE /* ContactCustomerDetailVC.xib in Resources */,
                134783D12C6C86F40096C736 /* PlaySettingView.xib in Resources */,
                138FE0E32C757DE900A964E8 /* BindPhone_2_VC.xib in Resources */,
                139C165A2C6A053000A924D9 /* Home_Style_2_TCell.xib in Resources */,
@@ -938,6 +1002,7 @@
                13985DBF2C69DDF90046B6DC /* HomeTopMenuView.xib in Resources */,
                1385E00B2C6C57A900AADB1F /* HomeItemDetailVC.xib in Resources */,
                13B021DB2C75DD0600414769 /* BankWithdrawVC.xib in Resources */,
                1338A6DE2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib in Resources */,
                137ABE3C2C6B6BDD003A91C5 /* ForgotPasswordInputCodeVC.xib in Resources */,
                13EA70052C75FA16005DF280 /* WalletRechargeVC.xib in Resources */,
                13A0A8AE2C74757200DF08B6 /* MessageTCell.xib in Resources */,
@@ -947,12 +1012,14 @@
                131E75C42C6B87C500E2C85D /* ForgotPasswordChangeVC.xib in Resources */,
                1333DC792C72D8C400D8ACAE /* CourseDetail_3_TCell.xib in Resources */,
                13A659462C6F4B9E00F731FA /* CourseDetail_1_TCell.xib in Resources */,
                134803DD2C7707BA00F4FDDA /* ContactCustomerVC.xib in Resources */,
                13334FD72C731E0B00914086 /* PavilionVC.xib in Resources */,
                139C16642C6A108A00A924D9 /* HomeRelaxBannerCCell.xib in Resources */,
                13E0FBFB2C6C8BE3009997AE /* CountdownChooseListView.xib in Resources */,
                13A0A89F2C746A8700DF08B6 /* CommonAlertSheetView.xib in Resources */,
                13F24E462C75901600D2BA90 /* CommonAlertView.xib in Resources */,
                130B765A2C6C4963006371AF /* HomeRelaxVoiceCCell.xib in Resources */,
                130C07122C76DA0500ADB098 /* SpendingDetailContentTCell.xib in Resources */,
                13E160202C6CB8930027F781 /* CommentListVC.xib in Resources */,
                139228B12C6B8374006F3CB6 /* Popup_1_View.xib in Resources */,
            );
@@ -1013,6 +1080,8 @@
                13D256B42C6C68E7006FC2D7 /* ShareView.swift in Sources */,
                139466472C6B8E0200F6FB15 /* UpdatePhoneVC.swift in Sources */,
                13A37A002C75C1DE0038D5C8 /* LevelVC.swift in Sources */,
                130C07072C76D1BF00ADB098 /* SpendingDetailMenuVC.swift in Sources */,
                130C07032C76D10B00ADB098 /* SpendingDetailVC.swift in Sources */,
                137175CB2C6C412A00B38EF1 /* BackgroundVoiceVC.swift in Sources */,
                137776922C6AFE69004FF994 /* SearchVC.swift in Sources */,
                13B021DC2C75DD0600414769 /* BankWithdrawVC.swift in Sources */,
@@ -1026,6 +1095,7 @@
                13985DAF2C69B7B00046B6DC /* BaseNav.swift in Sources */,
                134A45352C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift in Sources */,
                134A45392C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift in Sources */,
                1338A6DD2C76DD5E006CDD15 /* SpendingDetailInfoVC.swift in Sources */,
                138FE0E22C757DE900A964E8 /* BindPhone_2_VC.swift in Sources */,
                13985D982C69B2410046B6DC /* SceneDelegate.swift in Sources */,
                13985DBD2C69DDF30046B6DC /* HomeTopMenuView.swift in Sources */,
@@ -1033,6 +1103,7 @@
                13CBCCDF2C74793D00C67701 /* NoticeCenterSysDetailVC.swift in Sources */,
                13F24E452C75901600D2BA90 /* CommonAlertView.swift in Sources */,
                1385E0062C6C558200AADB1F /* HomeRelaxBanner_2_CCell.swift in Sources */,
                13649F9B2C7709CD00F4E0EE /* ContactCustomerTCell.swift in Sources */,
                130913EB2C6DE33200418201 /* PaymentOrderResultVC.swift in Sources */,
                13A0A8AF2C74757200DF08B6 /* MessageTCell.swift in Sources */,
                13FB6D7E2C6EE27100A0685D /* CourseOfficialItemCCell.swift in Sources */,
@@ -1042,6 +1113,7 @@
                139C16602C6A0FBB00A924D9 /* TestLeftRightCollectionViewFlowLayout.swift in Sources */,
                13985DC72C69E9550046B6DC /* CourseVC.swift in Sources */,
                13A379FD2C75B7280038D5C8 /* BindAccountVC.swift in Sources */,
                130C07132C76DA0500ADB098 /* SpendingDetailContentTCell.swift in Sources */,
                1385E0022C6C4F1200AADB1F /* Services.swift in Sources */,
                13FB6D8A2C6EFB4D00A0685D /* CourseDetailHeaderView.swift in Sources */,
                13985DB82C69B80D0046B6DC /* Themes.swift in Sources */,
@@ -1054,6 +1126,7 @@
                13CBCCE32C747C3D00C67701 /* NoticeCenterUserRepeaceDetailVC.swift in Sources */,
                138FE0DE2C757B2A00A964E8 /* BindPhone_1_VC.swift in Sources */,
                13A0A8A62C746B5600DF08B6 /* CommonDatePickerView.swift in Sources */,
                130C07052C76D1A000ADB098 /* SpendingDetailHeaderVC.swift in Sources */,
                13EFCDC12C6DD27A00B51AE6 /* PaymentOrderVC.swift in Sources */,
                13985DCE2C69EA160046B6DC /* MeVC.swift in Sources */,
                13A0A8AA2C74740800DF08B6 /* NoticeCenterVC.swift in Sources */,
@@ -1071,6 +1144,7 @@
                13985DB12C69B7B00046B6DC /* BaseVC.swift in Sources */,
                13985DD52C69FC1F0046B6DC /* Home_Style_1_TCell.swift in Sources */,
                132EB01C2C6B32B200990429 /* RegisterVC.swift in Sources */,
                134803DC2C7707BA00F4FDDA /* ContactCustomerVC.swift in Sources */,
                1331391B2C742A0C009E179E /* UserProfileVC.swift in Sources */,
                13E0FBF92C6C8BDE009997AE /* CountdownChooseListView.swift in Sources */,
                13A659472C6F4B9E00F731FA /* CourseDetail_1_TCell.swift in Sources */,
@@ -1089,11 +1163,14 @@
                13334FD52C731C1B00914086 /* VideoView.swift in Sources */,
                13FF0B452C75C820008E26CF /* WalletVC.swift in Sources */,
                130ED7E72C6AEF5900D0736E /* Home_Style_4_TCell.swift in Sources */,
                130C070B2C76D8F200ADB098 /* SpendingDetailContentVC.swift in Sources */,
                13EC08912C74990B00E00128 /* EmptyCCell.swift in Sources */,
                13F24E422C758DF100D2BA90 /* LogoutAccountVC.swift in Sources */,
                13649F9F2C770C9C00F4E0EE /* ContactCustomerDetailVC.swift in Sources */,
                130913EF2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.swift in Sources */,
                1333DC7A2C72D8C400D8ACAE /* CourseDetail_3_TCell.swift in Sources */,
                1300BD3C2C6DFB1C000BCA5E /* VIPCenterVC.swift in Sources */,
                134803D62C76E3E000F4FDDA /* WatchHistoryVC.swift in Sources */,
                1377B4162C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.swift in Sources */,
                13E160212C6CB8930027F781 /* CommentListVC.swift in Sources */,
                13A0A89E2C746A8700DF08B6 /* CommonAlertSheetView.swift in Sources */,
@@ -1101,10 +1178,13 @@
                137ABE3B2C6B6BDD003A91C5 /* ForgotPasswordInputCodeVC.swift in Sources */,
                130B765D2C6C4C33006371AF /* HomeItemListVC.swift in Sources */,
                1385E0002C6C4F1200AADB1F /* NetworkRequest.swift in Sources */,
                136C7C7D2C7715C9004540CD /* BitrhdayPickerView.swift in Sources */,
                13334FDB2C7321BE00914086 /* PavilionItemCell.swift in Sources */,
                13A6594B2C6F4F2D00F731FA /* CourseDetail_2_TCell.swift in Sources */,
                134803D32C76E29E00F4FDDA /* MyCommentListVC.swift in Sources */,
                1377768D2C6AFD25004FF994 /* LoginVC.swift in Sources */,
                13FB6D852C6EEFE900A0685D /* MenuListTCell.swift in Sources */,
                134803D92C76ED6400F4FDDA /* WatchHistoryDetailVC.swift in Sources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_question@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_question@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@2x.png
XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@3x.png
XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_unline_1@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_unline_1@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@2x.png
XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@3x.png
XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "bg_watch@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "bg_watch@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@2x.png
XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@3x.png
XQMuse/Root/Home/HomeVC.swift
@@ -29,9 +29,6 @@
                                titleItems.append(TitleItem(title: "放松助眠", subTitle: "与内心的宁静与喜悦入睡",hasMore:true))
                                titleItems.append(TitleItem(title: "放松助眠", subTitle: "与内心的宁静与喜悦入睡",hasMore:true))
                                titleItems.append(TitleItem(title: "放松助眠", subTitle: "与内心的宁静与喜悦入睡",hasMore:true))
                                let vc = WalletRechargeVC()
                                push(vc: vc)
    }
                override func setUI() {
XQMuse/Root/Home/VC/PaymentOrderVC.xib
@@ -54,7 +54,7 @@
                                                    <color key="textColor" red="0.27450980392156865" green="0.27450980392156865" blue="0.27450980392156865" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="1000" text="疗愈币0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iyN-A8-Fyo">
                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="1000" text="愈疗币0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iyN-A8-Fyo">
                                                    <rect key="frame" x="145" y="27.666666666666668" width="218" height="14.333333333333332"/>
                                                    <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="12"/>
                                                    <color key="textColor" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -478,7 +478,7 @@
        <image name="icon_choose_small_s" width="15.666666984558105" height="16"/>
        <image name="icon_wallet" width="21.666666030883789" height="21.666666030883789"/>
        <systemColor name="separatorColor">
            <color red="0.23529411764705882" green="0.23529411764705882" blue="0.2627450980392157" alpha="0.28999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
            <color red="0.23529411759999999" green="0.23529411759999999" blue="0.26274509800000001" alpha="0.28999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
        </systemColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
XQMuse/Root/Me/MeVC.swift
@@ -93,22 +93,26 @@
                //观看历史
                @IBAction func watchHistoryAction(_ sender: QMUIButton) {
                                let vc = WatchHistoryVC(type: .history)
                                push(vc: vc)
                }
                //我的收藏
                @IBAction func myColletAction(_ sender: QMUIButton) {
                                let vc = WatchHistoryVC(type: .collect)
                                push(vc: vc)
                }
                /// 我的已购
                @IBAction func paymentCourseAction(_ sender: QMUIButton) {
                                let vc = WatchHistoryVC(type: .payment)
                                push(vc: vc)
                }
                /// 联系客服
                @IBAction func customerAction(_ sender: QMUIButton) {
                                let vc = ContactCustomerVC()
                                push(vc: vc)
                }
                
                ///分享
XQMuse/Root/Me/TCell/ContactCustomerTCell.swift
New file
@@ -0,0 +1,16 @@
//
//  ContactCustomerTCell.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
class ContactCustomerTCell: UITableViewCell {
    override func awakeFromNib() {
        super.awakeFromNib()
                                selectionStyle = .none
    }
}
XQMuse/Root/Me/TCell/ContactCustomerTCell.xib
New file
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <capability name="Safe area layout guides" minToolsVersion="9.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"/>
        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_ContactCustomerTCell" rowHeight="133" id="KGk-i7-Jjw" customClass="ContactCustomerTCell" customModule="XQMuse" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="320" height="133"/>
            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
                <rect key="frame" x="0.0" y="0.0" width="320" height="133"/>
                <autoresizingMask key="autoresizingMask"/>
                <subviews>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_question_1" translatesAutoresizingMaskIntoConstraints="NO" id="wB7-Wt-maf">
                        <rect key="frame" x="16.666666666666671" y="20" width="17.333333333333329" height="17.666666666666671"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="17.5" id="Ft5-lm-13r"/>
                            <constraint firstAttribute="width" constant="17.5" id="po4-f7-kGF"/>
                        </constraints>
                    </imageView>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aBW-dt-2rJ">
                        <rect key="frame" x="41" y="19.666666666666668" width="272" height="18.000000000000004"/>
                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                        <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <nil key="highlightedColor"/>
                    </label>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ufh-LH-iEl">
                        <rect key="frame" x="41" y="48.333333333333329" width="217" height="63.333333333333329"/>
                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                        <color key="textColor" red="0.41960784313725491" green="0.41960784313725491" blue="0.41960784313725491" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <nil key="highlightedColor"/>
                    </label>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fnQ-Mv-aho">
                        <rect key="frame" x="15.666666666666657" y="132.66666666666666" width="292" height="0.33333333333334281"/>
                        <color key="backgroundColor" red="0.93333333333333335" green="0.93333333333333335" blue="0.93333333333333335" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="0.5" id="7wK-Po-g7e"/>
                        </constraints>
                    </view>
                </subviews>
                <constraints>
                    <constraint firstItem="fnQ-Mv-aho" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="15.5" id="8hz-X6-Uuf"/>
                    <constraint firstItem="aBW-dt-2rJ" firstAttribute="centerY" secondItem="wB7-Wt-maf" secondAttribute="centerY" id="Duy-hw-5ld"/>
                    <constraint firstItem="Ufh-LH-iEl" firstAttribute="top" secondItem="aBW-dt-2rJ" secondAttribute="bottom" constant="10.5" id="G1a-a9-CNL"/>
                    <constraint firstAttribute="trailing" secondItem="Ufh-LH-iEl" secondAttribute="trailing" constant="62" id="STL-K5-iLo"/>
                    <constraint firstItem="Ufh-LH-iEl" firstAttribute="leading" secondItem="aBW-dt-2rJ" secondAttribute="leading" id="Sdh-Sx-zyv"/>
                    <constraint firstItem="wB7-Wt-maf" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16.5" id="W7H-QC-InG"/>
                    <constraint firstItem="wB7-Wt-maf" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="20" id="Xtb-8g-7Be"/>
                    <constraint firstAttribute="bottom" secondItem="fnQ-Mv-aho" secondAttribute="bottom" id="bDr-1V-kUe"/>
                    <constraint firstAttribute="trailing" secondItem="aBW-dt-2rJ" secondAttribute="trailing" constant="7" id="fxt-uv-7mr"/>
                    <constraint firstItem="fnQ-Mv-aho" firstAttribute="top" secondItem="Ufh-LH-iEl" secondAttribute="bottom" constant="21" id="hJS-ZR-pzQ"/>
                    <constraint firstAttribute="trailing" secondItem="fnQ-Mv-aho" secondAttribute="trailing" constant="12.5" id="iyN-LS-7KH"/>
                    <constraint firstItem="aBW-dt-2rJ" firstAttribute="leading" secondItem="wB7-Wt-maf" secondAttribute="trailing" constant="7" id="qX7-qO-a9b"/>
                </constraints>
            </tableViewCellContentView>
            <viewLayoutGuide key="safeArea" id="njF-e1-oar"/>
            <point key="canvasLocation" x="59.541984732824424" y="51.760563380281695"/>
        </tableViewCell>
    </objects>
    <resources>
        <image name="icon_question_1" width="17.666666030883789" height="17.666666030883789"/>
    </resources>
</document>
XQMuse/Root/Me/TCell/SpendingDetailContentTCell.swift
New file
@@ -0,0 +1,16 @@
//
//  SpendingDetailContentTCell.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
class SpendingDetailContentTCell: UITableViewCell {
    override func awakeFromNib() {
        super.awakeFromNib()
                                selectionStyle = .none
    }
}
XQMuse/Root/Me/TCell/SpendingDetailContentTCell.xib
New file
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <capability name="Safe area layout guides" minToolsVersion="9.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"/>
        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_SpendingDetailContentTCell" rowHeight="77" id="KGk-i7-Jjw" customClass="SpendingDetailContentTCell" customModule="XQMuse" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="350" height="77"/>
            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
                <rect key="frame" x="0.0" y="0.0" width="350" height="77"/>
                <autoresizingMask key="autoresizingMask"/>
                <subviews>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fed-zq-HQC">
                        <rect key="frame" x="14" y="16" width="13" height="20"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="20" id="hV8-he-NN8"/>
                        </constraints>
                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                        <nil key="highlightedColor"/>
                    </label>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RqV-gN-LrA">
                        <rect key="frame" x="14" y="38" width="11.333333333333336" height="14.333333333333336"/>
                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.45000000000000001" colorSpace="custom" customColorSpace="sRGB"/>
                        <nil key="highlightedColor"/>
                    </label>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="fBe-Cv-aLG">
                        <rect key="frame" x="330" y="33.666666666666664" width="6" height="10"/>
                        <constraints>
                            <constraint firstAttribute="width" constant="6" id="KDx-CG-SmK"/>
                            <constraint firstAttribute="height" constant="10" id="hAY-kG-NwG"/>
                        </constraints>
                    </imageView>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5sc-jc-aUv">
                        <rect key="frame" x="307" y="30" width="13" height="17"/>
                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                        <nil key="highlightedColor"/>
                    </label>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="H52-cH-c3X">
                        <rect key="frame" x="14" y="76.666666666666671" width="322" height="0.3333333333333286"/>
                        <color key="backgroundColor" red="0.83137254901960778" green="0.83137254901960778" blue="0.83137254901960778" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="0.40000000000000002" id="vG2-8C-hZj"/>
                        </constraints>
                    </view>
                </subviews>
                <constraints>
                    <constraint firstItem="fBe-Cv-aLG" firstAttribute="leading" secondItem="5sc-jc-aUv" secondAttribute="trailing" constant="10" id="0uf-nR-PUt"/>
                    <constraint firstItem="RqV-gN-LrA" firstAttribute="top" secondItem="fed-zq-HQC" secondAttribute="bottom" constant="2" id="1Xq-da-LMF"/>
                    <constraint firstAttribute="trailing" secondItem="fBe-Cv-aLG" secondAttribute="trailing" constant="14" id="2ew-iQ-IRg"/>
                    <constraint firstItem="RqV-gN-LrA" firstAttribute="leading" secondItem="fed-zq-HQC" secondAttribute="leading" id="FrJ-7k-FbH"/>
                    <constraint firstAttribute="trailing" secondItem="H52-cH-c3X" secondAttribute="trailing" constant="14" id="IDC-yU-lsS"/>
                    <constraint firstItem="fBe-Cv-aLG" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="Jhh-xh-1W7"/>
                    <constraint firstItem="fBe-Cv-aLG" firstAttribute="centerY" secondItem="5sc-jc-aUv" secondAttribute="centerY" id="Sps-ml-0Te"/>
                    <constraint firstItem="H52-cH-c3X" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="UzX-Mq-h73"/>
                    <constraint firstItem="fed-zq-HQC" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="Xps-N1-Oc0"/>
                    <constraint firstAttribute="bottom" secondItem="H52-cH-c3X" secondAttribute="bottom" id="a1V-vd-mAX"/>
                    <constraint firstItem="fed-zq-HQC" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="16" id="qsR-Ek-AlO"/>
                </constraints>
            </tableViewCellContentView>
            <viewLayoutGuide key="safeArea" id="njF-e1-oar"/>
            <point key="canvasLocation" x="161.83206106870227" y="32.04225352112676"/>
        </tableViewCell>
    </objects>
    <resources>
        <image name="icon_more" width="6" height="10.666666984558105"/>
    </resources>
</document>
XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift
New file
@@ -0,0 +1,27 @@
//
//  ContactCustomerDetailVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
import WebKit
class ContactCustomerDetailVC: BaseVC {
                @IBOutlet weak var webView: WKWebView!
                override func viewDidLoad() {
        super.viewDidLoad()
                                title = "问题详情"
    }
                override func setUI() {
                                webView.scrollView.backgroundColor = .clear
                                webView.backgroundColor = UIColor(hexString: "#F5F5F5")
                                webView.scrollView.showsHorizontalScrollIndicator = false
                                webView.isOpaque = false
                                webView.jq_cornerRadius = 11
                }
}
XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib
New file
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <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" customClass="ContactCustomerDetailVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
                <outlet property="webView" destination="RzU-MN-ulm" id="5nl-6O-ZZ8"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Nd2-A4-M1T">
                    <rect key="frame" x="14" y="76" width="364" height="53"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_question" translatesAutoresizingMaskIntoConstraints="NO" id="GhE-Ws-GtH">
                            <rect key="frame" x="0.0" y="0.0" width="18" height="18"/>
                            <constraints>
                                <constraint firstAttribute="width" constant="18" id="2FN-8o-LIj"/>
                                <constraint firstAttribute="height" constant="18" id="Tee-5h-uVY"/>
                            </constraints>
                        </imageView>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UU5-p7-Ba1">
                            <rect key="frame" x="29" y="-1" width="324" height="20"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="20" id="v0l-ze-jsK"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
                            <color key="textColor" red="0.098039215686274508" green="0.098039215686274508" blue="0.098039215686274508" alpha="0.78000000000000003" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xb7-xl-air">
                            <rect key="frame" x="29" y="24" width="261" height="14.333333333333336"/>
                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                            <color key="textColor" red="0.098039215686274508" green="0.098039215686274508" blue="0.098039215686274508" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MvE-Yv-e31">
                            <rect key="frame" x="0.0" y="52" width="364" height="1"/>
                            <color key="backgroundColor" red="0.59215686274509804" green="0.59215686274509804" blue="0.59215686274509804" alpha="0.080000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="1" id="noh-0o-cef"/>
                            </constraints>
                        </view>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstItem="GhE-Ws-GtH" firstAttribute="leading" secondItem="Nd2-A4-M1T" secondAttribute="leading" id="3Bz-mj-QuY"/>
                        <constraint firstItem="xb7-xl-air" firstAttribute="leading" secondItem="UU5-p7-Ba1" secondAttribute="leading" id="4oD-0p-CVc"/>
                        <constraint firstItem="xb7-xl-air" firstAttribute="top" secondItem="UU5-p7-Ba1" secondAttribute="bottom" constant="5" id="7U4-LB-MR4"/>
                        <constraint firstAttribute="trailing" secondItem="UU5-p7-Ba1" secondAttribute="trailing" constant="11" id="8ZL-P7-T1D"/>
                        <constraint firstItem="UU5-p7-Ba1" firstAttribute="leading" secondItem="GhE-Ws-GtH" secondAttribute="trailing" constant="11" id="CQ5-UU-7wH"/>
                        <constraint firstAttribute="bottom" secondItem="MvE-Yv-e31" secondAttribute="bottom" id="DGg-m3-q8K"/>
                        <constraint firstAttribute="height" constant="53" id="RDB-68-GVb"/>
                        <constraint firstItem="UU5-p7-Ba1" firstAttribute="centerY" secondItem="GhE-Ws-GtH" secondAttribute="centerY" id="XSi-1J-qUs"/>
                        <constraint firstItem="GhE-Ws-GtH" firstAttribute="top" secondItem="Nd2-A4-M1T" secondAttribute="top" id="Zcu-1Y-15d"/>
                        <constraint firstItem="MvE-Yv-e31" firstAttribute="leading" secondItem="Nd2-A4-M1T" secondAttribute="leading" id="ev5-LN-w74"/>
                        <constraint firstAttribute="trailing" secondItem="xb7-xl-air" secondAttribute="trailing" constant="74" id="s0Y-dG-tai"/>
                        <constraint firstAttribute="trailing" secondItem="MvE-Yv-e31" secondAttribute="trailing" id="yYL-9o-UgQ"/>
                    </constraints>
                </view>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="咨询客服" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WL0-dE-4xa">
                    <rect key="frame" x="172" y="803.66666666666663" width="49.333333333333343" height="14.333333333333371"/>
                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                    <color key="textColor" red="0.098039215686274508" green="0.12941176470588234" blue="0.24313725490196078" alpha="0.67000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                    <nil key="highlightedColor"/>
                </label>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="2kC-yj-fW4">
                    <rect key="frame" x="148.66666666666666" y="703.66666666666663" width="96" height="96"/>
                    <color key="backgroundColor" red="0.098039215690000001" green="0.12941176469999999" blue="0.24313725489999999" alpha="0.67000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstAttribute="width" constant="96" id="Idf-Z4-2b1"/>
                        <constraint firstAttribute="height" constant="96" id="n5B-wR-B6d"/>
                    </constraints>
                </imageView>
                <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RzU-MN-ulm">
                    <rect key="frame" x="14" y="149.00000000000003" width="365" height="476.66666666666674"/>
                    <color key="backgroundColor" red="0.96078431372549022" green="0.96078431372549022" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <wkWebViewConfiguration key="configuration">
                        <audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
                        <wkPreferences key="preferences"/>
                    </wkWebViewConfiguration>
                </wkWebView>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="Nd2-A4-M1T" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="3MP-js-noI"/>
                <constraint firstItem="RzU-MN-ulm" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="7cQ-YK-X4f"/>
                <constraint firstItem="WL0-dE-4xa" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="IuI-ib-PAq"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Nd2-A4-M1T" secondAttribute="trailing" constant="15" id="SQd-1e-wUq"/>
                <constraint firstItem="WL0-dE-4xa" firstAttribute="top" secondItem="2kC-yj-fW4" secondAttribute="bottom" constant="4" id="aaA-Jd-IpY"/>
                <constraint firstItem="2kC-yj-fW4" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="eVb-V7-9WK"/>
                <constraint firstItem="2kC-yj-fW4" firstAttribute="top" secondItem="RzU-MN-ulm" secondAttribute="bottom" constant="78" id="fBA-g0-0qZ"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="RzU-MN-ulm" secondAttribute="trailing" constant="14" id="hw7-dO-fxR"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="WL0-dE-4xa" secondAttribute="bottom" id="iqe-ZZ-hcE"/>
                <constraint firstItem="RzU-MN-ulm" firstAttribute="top" secondItem="Nd2-A4-M1T" secondAttribute="bottom" constant="20" id="v4r-SW-ozA"/>
                <constraint firstItem="Nd2-A4-M1T" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="topMargin" constant="17" id="ycS-IN-qI9"/>
            </constraints>
            <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
        <image name="icon_question" width="15.666666984558105" height="15.666666984558105"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
XQMuse/Root/Me/VC/ContactCustomerVC.swift
New file
@@ -0,0 +1,42 @@
//
//  ContactCustomerVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
class ContactCustomerVC: BaseVC {
                @IBOutlet weak var tableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
                                title = "联系客服"
                                tableView.separatorStyle = .none
                                tableView.delegate = self
                                tableView.dataSource = self
                                tableView.showsVerticalScrollIndicator = false
                                tableView.register(UINib(nibName: "ContactCustomerTCell", bundle: nil), forCellReuseIdentifier: "_ContactCustomerTCell")
    }
}
extension ContactCustomerVC:UITableViewDelegate & UITableViewDataSource{
                func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
                                let vc = ContactCustomerDetailVC()
                                push(vc: vc)
                }
                func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                                let cell = tableView.dequeueReusableCell(withIdentifier: "_ContactCustomerTCell", for: indexPath) as! ContactCustomerTCell
                                return cell
                }
                func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                                return 10
                }
}
XQMuse/Root/Me/VC/ContactCustomerVC.xib
New file
@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <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" customClass="ContactCustomerVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="tableView" destination="cf6-0I-xxB" id="kE1-aF-snG"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_voice_top" translatesAutoresizingMaskIntoConstraints="NO" id="eRQ-03-F3I">
                    <rect key="frame" x="0.0" y="0.0" width="393" height="297"/>
                </imageView>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qdl-41-EV1">
                    <rect key="frame" x="130.33333333333331" y="106.66666666666667" width="132.33333333333331" height="132.33333333333331"/>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="width" constant="132.5" id="3xI-p5-QcI"/>
                        <constraint firstAttribute="height" constant="132.5" id="ffo-MU-W1a"/>
                    </constraints>
                </view>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="扫码添加客服微信" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fc3-8Q-v5s">
                    <rect key="frame" x="143.33333333333334" y="251.99999999999997" width="106.33333333333334" height="12.666666666666657"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="12.5" id="GbW-jb-gwo"/>
                    </constraints>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                    <nil key="textColor"/>
                    <nil key="highlightedColor"/>
                </label>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kph-H0-jYO">
                    <rect key="frame" x="0.0" y="339.66666666666674" width="393" height="478.33333333333326"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="问题类型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aYd-s7-IT0">
                            <rect key="frame" x="18.000000000000004" y="31.999999999999996" width="61.333333333333343" height="14.333333333333332"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="14.5" id="ZBR-Iq-kZa"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="cf6-0I-xxB">
                            <rect key="frame" x="0.0" y="50.999999999999972" width="393" height="427.33333333333326"/>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        </tableView>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstItem="aYd-s7-IT0" firstAttribute="top" secondItem="Kph-H0-jYO" secondAttribute="top" constant="32" id="1LK-Hp-TQm"/>
                        <constraint firstAttribute="bottom" secondItem="cf6-0I-xxB" secondAttribute="bottom" id="5tn-Bo-4he"/>
                        <constraint firstItem="aYd-s7-IT0" firstAttribute="leading" secondItem="Kph-H0-jYO" secondAttribute="leading" constant="18" id="GqS-Np-07g"/>
                        <constraint firstItem="cf6-0I-xxB" firstAttribute="leading" secondItem="Kph-H0-jYO" secondAttribute="leading" id="Ofc-BY-Wqi"/>
                        <constraint firstItem="cf6-0I-xxB" firstAttribute="top" secondItem="aYd-s7-IT0" secondAttribute="bottom" constant="4.5" id="gpz-TQ-avQ"/>
                        <constraint firstAttribute="trailing" secondItem="cf6-0I-xxB" secondAttribute="trailing" id="j7I-Y3-ieq"/>
                    </constraints>
                </view>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="fc3-8Q-v5s" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="6Ul-xw-5ay"/>
                <constraint firstItem="eRQ-03-F3I" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="6gV-vl-oVQ"/>
                <constraint firstItem="fc3-8Q-v5s" firstAttribute="top" secondItem="Qdl-41-EV1" secondAttribute="bottom" constant="13" id="7zz-7V-nFb"/>
                <constraint firstItem="Qdl-41-EV1" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="47.5" id="9lB-L9-Qr2"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="Kph-H0-jYO" secondAttribute="bottom" id="AyY-VT-MA6"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Kph-H0-jYO" secondAttribute="trailing" id="RCa-FS-6eC"/>
                <constraint firstItem="eRQ-03-F3I" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="S88-LS-Gq1"/>
                <constraint firstItem="Qdl-41-EV1" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="UgY-bA-Bs9"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="eRQ-03-F3I" secondAttribute="trailing" id="b9W-Du-LpC"/>
                <constraint firstItem="Kph-H0-jYO" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="bse-U0-2rA"/>
                <constraint firstItem="Kph-H0-jYO" firstAttribute="top" secondItem="eRQ-03-F3I" secondAttribute="bottom" constant="42.5" id="hlP-SK-cY2"/>
            </constraints>
            <point key="canvasLocation" x="59" y="21"/>
        </view>
    </objects>
    <resources>
        <image name="bg_voice_top" width="390" height="297"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
XQMuse/Root/Me/VC/MyCommentListVC.swift
New file
@@ -0,0 +1,15 @@
//
//  MyCommentListVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
class MyCommentListVC: BaseVC {
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
XQMuse/Root/Me/VC/SpendingDetailContentVC.swift
New file
@@ -0,0 +1,65 @@
//
//  SpendingDetailContentVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
import JQTools
class SpendingDetailContentVC: BaseVC {
                private var page:Int!
                private var tableView:UITableView!
                init(page:Int) {
                                super.init(nibName: nil, bundle: nil)
                                self.page = page
                }
                required init?(coder: NSCoder) {
                                fatalError("init(coder:) has not been implemented")
                }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
                override func setUI() {
                                tableView = UITableView(frame: .zero, style: .plain)
                                tableView.delegate = self
                                tableView.dataSource = self
                                tableView.register(UINib(nibName: "SpendingDetailContentTCell", bundle: nil), forCellReuseIdentifier: "_SpendingDetailContentTCell")
                                tableView.separatorStyle = .none
                                view.addSubview(tableView)
                                tableView.snp.makeConstraints { make in
                                                make.edges.equalToSuperview()
                                }
                }
}
extension SpendingDetailContentVC:UITableViewDelegate & UITableViewDataSource{
                func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
                                let vc = SpendingDetailInfoVC()
                                JQ_currentViewController().jq_push(vc: vc, animated: true)
                }
                func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                                let cell = tableView.dequeueReusableCell(withIdentifier: "_SpendingDetailContentTCell", for: indexPath) as! SpendingDetailContentTCell
                                return cell
                }
                func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                                return 10
                }
                func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
                                return 70
                }
}
XQMuse/Root/Me/VC/SpendingDetailHeaderVC.swift
New file
@@ -0,0 +1,21 @@
//
//  SpendingDetailHeaderVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
import JQTools
class SpendingDetailHeaderVC: BaseVC {
    override func viewDidLoad() {
        super.viewDidLoad()
    }
                @IBAction func withdrawAction(_ sender: UIButton) {
                                let vc = BankWithdrawVC()
                                JQ_currentViewController().jq_push(vc: vc)
                }
}
XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib
New file
@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <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" customClass="SpendingDetailHeaderVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="view" destination="iN0-l3-epB" id="dt1-eq-STC"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="iN0-l3-epB">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_voice_top" translatesAutoresizingMaskIntoConstraints="NO" id="q7z-fp-0F3">
                    <rect key="frame" x="0.0" y="0.0" width="393" height="297"/>
                </imageView>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FLL-3F-OgN">
                    <rect key="frame" x="14" y="100" width="365" height="259"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="QxB-tg-ivp">
                            <rect key="frame" x="0.0" y="0.0" width="365" height="259"/>
                            <color key="backgroundColor" red="0.59215686270000001" green="0.59215686270000001" blue="0.59215686270000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        </imageView>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="可用余额(元)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5wO-F5-AbK">
                            <rect key="frame" x="135" y="53" width="95.333333333333314" height="21"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="21" id="grS-X9-lbC"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iKf-J7-77x">
                            <rect key="frame" x="169.66666666666666" y="82" width="26" height="56"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="56" id="qLX-Sj-MDm"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="40"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vxb-Vy-vKw">
                            <rect key="frame" x="102" y="187" width="161" height="50"/>
                            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="50" id="H6Y-Fx-GxG"/>
                                <constraint firstAttribute="width" constant="161" id="z2M-lz-0Rf"/>
                            </constraints>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="提现">
                                <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            </state>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                                <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                                    <real key="value" value="25"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                            <connections>
                                <action selector="withdrawAction:" destination="-1" eventType="touchUpInside" id="UVK-gF-NR1"/>
                            </connections>
                        </button>
                    </subviews>
                    <constraints>
                        <constraint firstItem="iKf-J7-77x" firstAttribute="centerX" secondItem="5wO-F5-AbK" secondAttribute="centerX" id="3Je-gn-r5V"/>
                        <constraint firstAttribute="trailing" secondItem="QxB-tg-ivp" secondAttribute="trailing" id="9M9-80-ebx"/>
                        <constraint firstItem="vxb-Vy-vKw" firstAttribute="top" secondItem="iKf-J7-77x" secondAttribute="bottom" constant="49" id="J0E-gu-oYn"/>
                        <constraint firstItem="iKf-J7-77x" firstAttribute="top" secondItem="5wO-F5-AbK" secondAttribute="bottom" constant="8" id="KMi-Sw-3ua"/>
                        <constraint firstAttribute="bottom" secondItem="QxB-tg-ivp" secondAttribute="bottom" id="QRR-Fg-rbR"/>
                        <constraint firstItem="5wO-F5-AbK" firstAttribute="top" secondItem="FLL-3F-OgN" secondAttribute="top" constant="53" id="b3P-Pa-qve"/>
                        <constraint firstItem="QxB-tg-ivp" firstAttribute="top" secondItem="FLL-3F-OgN" secondAttribute="top" id="bmI-Xd-qfh"/>
                        <constraint firstAttribute="width" secondItem="FLL-3F-OgN" secondAttribute="height" multiplier="1:0.71" id="dV9-Gx-NFy"/>
                        <constraint firstItem="vxb-Vy-vKw" firstAttribute="centerX" secondItem="5wO-F5-AbK" secondAttribute="centerX" id="vXx-NP-ctg"/>
                        <constraint firstItem="5wO-F5-AbK" firstAttribute="centerX" secondItem="QxB-tg-ivp" secondAttribute="centerX" id="w8j-Au-AKg"/>
                        <constraint firstItem="QxB-tg-ivp" firstAttribute="leading" secondItem="FLL-3F-OgN" secondAttribute="leading" id="xV2-ey-Wgc"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="8"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </view>
            </subviews>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstAttribute="trailing" secondItem="FLL-3F-OgN" secondAttribute="trailing" constant="14" id="BEo-XJ-wPX"/>
                <constraint firstItem="q7z-fp-0F3" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="Dz2-yG-fkF"/>
                <constraint firstItem="q7z-fp-0F3" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="SIa-M2-4aC"/>
                <constraint firstAttribute="trailing" secondItem="q7z-fp-0F3" secondAttribute="trailing" id="gXb-c6-jDM"/>
                <constraint firstItem="FLL-3F-OgN" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="topMargin" constant="41" id="n7n-Ik-siT"/>
                <constraint firstItem="FLL-3F-OgN" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="pPa-s0-zkG"/>
            </constraints>
            <point key="canvasLocation" x="59" y="21"/>
        </view>
    </objects>
    <resources>
        <image name="bg_voice_top" width="390" height="297"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
XQMuse/Root/Me/VC/SpendingDetailInfoVC.swift
New file
@@ -0,0 +1,26 @@
//
//  SpendingDetailInfoVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
class SpendingDetailInfoVC: BaseVC {
    override func viewDidLoad() {
        super.viewDidLoad()
                                title = "收入详情"
                                navigationController?.navigationBar.scrollEdgeAppearance?.backgroundColor = .white
    }
                override func viewWillDisappear(_ animated: Bool) {
                                super.viewDidDisappear(animated)
                                navigationController?.navigationBar.scrollEdgeAppearance?.backgroundColor = .white.withAlphaComponent(0)
                }
                override func setUI() {
                                view.backgroundColor = UIColor(hexString: "f6f6f6")
                }
}
XQMuse/Root/Me/VC/SpendingDetailInfoVC.xib
New file
@@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <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" customClass="SpendingDetailInfoVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ahx-Il-0W6">
                    <rect key="frame" x="14" y="68" width="365" height="234"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="余额" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Czb-wC-0GY">
                            <rect key="frame" x="10" y="17" width="32.666666666666664" height="14"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="14" id="7Tc-45-Re5"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KTv-tt-un5">
                            <rect key="frame" x="9" y="48" width="347" height="1"/>
                            <color key="backgroundColor" red="0.59215686274509804" green="0.59215686274509804" blue="0.59215686274509804" alpha="0.14999999999999999" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="1" id="zfJ-wB-lMj"/>
                            </constraints>
                        </view>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5gW-lj-8Uk">
                            <rect key="frame" x="340.33333333333331" y="14.333333333333327" width="14.666666666666686" height="19.333333333333329"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                            <color key="textColor" red="0.99607843137254903" green="0.19607843137254902" blue="0.066666666666666666" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="14" translatesAutoresizingMaskIntoConstraints="NO" id="BTp-hQ-kGg">
                            <rect key="frame" x="10" y="62" width="345" height="152"/>
                            <subviews>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="paU-qi-7Zk">
                                    <rect key="frame" x="0.0" y="0.0" width="345" height="17"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="收入类型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c50-FX-5d4">
                                            <rect key="frame" x="0.0" y="1.3333333333333437" width="49.333333333333336" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vch-45-s0U">
                                            <rect key="frame" x="333.66666666666669" y="1.3333333333333437" width="11.333333333333314" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                    </subviews>
                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="17" id="3ZX-fU-2dj"/>
                                        <constraint firstItem="c50-FX-5d4" firstAttribute="leading" secondItem="paU-qi-7Zk" secondAttribute="leading" id="7uP-D7-edz"/>
                                        <constraint firstItem="Vch-45-s0U" firstAttribute="centerY" secondItem="paU-qi-7Zk" secondAttribute="centerY" id="I4x-ZN-Z75"/>
                                        <constraint firstItem="c50-FX-5d4" firstAttribute="centerY" secondItem="paU-qi-7Zk" secondAttribute="centerY" id="Ndp-fV-zVd"/>
                                        <constraint firstAttribute="trailing" secondItem="Vch-45-s0U" secondAttribute="trailing" id="bKg-f2-MsG"/>
                                    </constraints>
                                </view>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Ym-dd-vx2">
                                    <rect key="frame" x="0.0" y="31" width="345" height="17"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2ep-Yl-gTQ">
                                            <rect key="frame" x="0.0" y="1.3333333333333437" width="24.666666666666668" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cv1-Z7-VpI">
                                            <rect key="frame" x="333.66666666666669" y="1.3333333333333437" width="11.333333333333314" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                    </subviews>
                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                    <constraints>
                                        <constraint firstItem="Cv1-Z7-VpI" firstAttribute="centerY" secondItem="7Ym-dd-vx2" secondAttribute="centerY" id="8ad-2d-chb"/>
                                        <constraint firstAttribute="height" constant="17" id="GHV-YE-TKJ"/>
                                        <constraint firstAttribute="trailing" secondItem="Cv1-Z7-VpI" secondAttribute="trailing" id="MkC-yw-hxs"/>
                                        <constraint firstItem="2ep-Yl-gTQ" firstAttribute="centerY" secondItem="7Ym-dd-vx2" secondAttribute="centerY" id="RJf-Za-wBw"/>
                                        <constraint firstItem="2ep-Yl-gTQ" firstAttribute="leading" secondItem="7Ym-dd-vx2" secondAttribute="leading" id="wAH-Vm-wCc"/>
                                    </constraints>
                                </view>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nvZ-aC-LZK">
                                    <rect key="frame" x="0.0" y="62" width="345" height="17"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="流水单号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Zm-gu-UT7">
                                            <rect key="frame" x="0.0" y="1.3333333333333437" width="49.333333333333336" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fQy-0x-TJ9">
                                            <rect key="frame" x="333.66666666666669" y="1.3333333333333437" width="11.333333333333314" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                    </subviews>
                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                    <constraints>
                                        <constraint firstItem="4Zm-gu-UT7" firstAttribute="leading" secondItem="nvZ-aC-LZK" secondAttribute="leading" id="LgK-iY-18G"/>
                                        <constraint firstAttribute="height" constant="17" id="RfG-Dv-Zcn"/>
                                        <constraint firstItem="4Zm-gu-UT7" firstAttribute="centerY" secondItem="nvZ-aC-LZK" secondAttribute="centerY" id="Xst-PZ-voj"/>
                                        <constraint firstAttribute="trailing" secondItem="fQy-0x-TJ9" secondAttribute="trailing" id="klv-YR-BCo"/>
                                        <constraint firstItem="fQy-0x-TJ9" firstAttribute="centerY" secondItem="nvZ-aC-LZK" secondAttribute="centerY" id="kxx-mQ-uDa"/>
                                    </constraints>
                                </view>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AKh-er-j4M">
                                    <rect key="frame" x="0.0" y="93" width="345" height="28"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="下级用户" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BoT-97-SXQ">
                                            <rect key="frame" x="0.0" y="7.0000000000000009" width="49.333333333333336" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lLV-Rs-74K">
                                            <rect key="frame" x="295.66666666666669" y="7.0000000000000009" width="11.333333333333314" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Xrs-Ns-uus">
                                            <rect key="frame" x="317" y="0.0" width="28" height="28"/>
                                            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <constraints>
                                                <constraint firstAttribute="height" constant="28" id="XrL-GU-WQa"/>
                                                <constraint firstAttribute="width" constant="28" id="rTH-MJ-XUY"/>
                                            </constraints>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                                                <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                                                    <real key="value" value="14"/>
                                                </userDefinedRuntimeAttribute>
                                            </userDefinedRuntimeAttributes>
                                        </imageView>
                                    </subviews>
                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                    <constraints>
                                        <constraint firstItem="lLV-Rs-74K" firstAttribute="centerY" secondItem="AKh-er-j4M" secondAttribute="centerY" id="8Vc-Vc-DyN"/>
                                        <constraint firstItem="Xrs-Ns-uus" firstAttribute="leading" secondItem="lLV-Rs-74K" secondAttribute="trailing" constant="10" id="BwW-IX-EUX"/>
                                        <constraint firstItem="BoT-97-SXQ" firstAttribute="leading" secondItem="AKh-er-j4M" secondAttribute="leading" id="MmF-eQ-NGT"/>
                                        <constraint firstAttribute="trailing" secondItem="Xrs-Ns-uus" secondAttribute="trailing" id="PbP-lJ-udM"/>
                                        <constraint firstAttribute="height" constant="28" id="SO3-mK-NLK"/>
                                        <constraint firstItem="BoT-97-SXQ" firstAttribute="centerY" secondItem="AKh-er-j4M" secondAttribute="centerY" id="rft-PO-AUs"/>
                                        <constraint firstItem="Xrs-Ns-uus" firstAttribute="centerY" secondItem="AKh-er-j4M" secondAttribute="centerY" id="zdF-SC-3SQ"/>
                                    </constraints>
                                </view>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Yhm-fa-EN3">
                                    <rect key="frame" x="0.0" y="135" width="345" height="17"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="备注" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S3M-IX-Tpo">
                                            <rect key="frame" x="0.0" y="1.3333333333333153" width="24.666666666666668" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3JX-nJ-8Mi">
                                            <rect key="frame" x="333.66666666666669" y="1.3333333333333153" width="11.333333333333314" height="14.333333333333336"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                    </subviews>
                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                    <constraints>
                                        <constraint firstItem="S3M-IX-Tpo" firstAttribute="centerY" secondItem="Yhm-fa-EN3" secondAttribute="centerY" id="1eW-L6-lqe"/>
                                        <constraint firstAttribute="height" constant="17" id="aDg-D9-ll5"/>
                                        <constraint firstAttribute="trailing" secondItem="3JX-nJ-8Mi" secondAttribute="trailing" id="hE2-ti-SSH"/>
                                        <constraint firstItem="S3M-IX-Tpo" firstAttribute="leading" secondItem="Yhm-fa-EN3" secondAttribute="leading" id="pof-v6-In3"/>
                                        <constraint firstItem="3JX-nJ-8Mi" firstAttribute="centerY" secondItem="Yhm-fa-EN3" secondAttribute="centerY" id="vF2-ma-aXt"/>
                                    </constraints>
                                </view>
                            </subviews>
                        </stackView>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="trailing" secondItem="BTp-hQ-kGg" secondAttribute="trailing" constant="10" id="9Fr-pg-23X"/>
                        <constraint firstItem="KTv-tt-un5" firstAttribute="top" secondItem="Czb-wC-0GY" secondAttribute="bottom" constant="17" id="EfL-Hh-fUb"/>
                        <constraint firstAttribute="trailing" secondItem="5gW-lj-8Uk" secondAttribute="trailing" constant="10" id="Km7-BZ-B7P"/>
                        <constraint firstItem="BTp-hQ-kGg" firstAttribute="top" secondItem="KTv-tt-un5" secondAttribute="bottom" constant="13" id="Y1O-QS-MpG"/>
                        <constraint firstItem="KTv-tt-un5" firstAttribute="leading" secondItem="Ahx-Il-0W6" secondAttribute="leading" constant="9" id="Y3E-xK-JzD"/>
                        <constraint firstItem="BTp-hQ-kGg" firstAttribute="leading" secondItem="Ahx-Il-0W6" secondAttribute="leading" constant="10" id="bHC-O3-2lp"/>
                        <constraint firstItem="Czb-wC-0GY" firstAttribute="top" secondItem="Ahx-Il-0W6" secondAttribute="top" constant="17" id="bty-8k-Jha"/>
                        <constraint firstItem="Czb-wC-0GY" firstAttribute="leading" secondItem="Ahx-Il-0W6" secondAttribute="leading" constant="10" id="dXj-3Z-dFY"/>
                        <constraint firstAttribute="bottom" secondItem="BTp-hQ-kGg" secondAttribute="bottom" constant="20" id="fbO-Ml-bMd"/>
                        <constraint firstItem="5gW-lj-8Uk" firstAttribute="centerY" secondItem="Czb-wC-0GY" secondAttribute="centerY" id="kw4-oR-cVC"/>
                        <constraint firstAttribute="trailing" secondItem="KTv-tt-un5" secondAttribute="trailing" constant="9" id="q4Q-yB-wzh"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="10"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </view>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Ahx-Il-0W6" secondAttribute="trailing" constant="14" id="BcG-dY-uIN"/>
                <constraint firstItem="Ahx-Il-0W6" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="P5Q-wQ-bbf"/>
                <constraint firstItem="Ahx-Il-0W6" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="9" id="pNk-kh-1Aq"/>
            </constraints>
            <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
XQMuse/Root/Me/VC/SpendingDetailMenuVC.swift
New file
@@ -0,0 +1,53 @@
//
//  SpendingDetailMenuVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
import SPPageMenu
class SpendingDetailMenuVC: BaseVC {
                private(set) var pageMenu:SPPageMenu = {
                                let pageMenu = SPPageMenu(frame: .zero, trackerStyle: .line)
                                // 追踪线
                                pageMenu.trackerWidth = 12
                                pageMenu.setTrackerHeight(2, cornerRadius:1)
                                pageMenu.trackerFollowingMode = .always
                                pageMenu.contentInset = UIEdgeInsets(top: 0, left: 19.5, bottom: 5, right: 19.5)
                                pageMenu.setItems(["全部","收入","支出"], selectedItemIndex: 0)
                                pageMenu.backgroundColor = UIColor(hexString: "#F0F0F0")
                                pageMenu.tracker.backgroundColor = UIColor(hexString: "#8AAE65")
                                pageMenu.backgroundColor = .white
                                // 分割线
                                pageMenu.dividingLine.backgroundColor = UIColor(hexString: "#D4D4D4")
                                pageMenu.dividingLineHeight = 0.4
                                // item
                                pageMenu.spacing = 27.0
                                pageMenu.permutationWay = .notScrollAdaptContent
                                // 字体
                                pageMenu.selectedItemTitleFont = Def_SourceHanSansCN_Regular(fontSize: 14)
                                pageMenu.unSelectedItemTitleFont = Def_SourceHanSansCN_Regular(fontSize: 14)
                                // 颜色
                                pageMenu.selectedItemTitleColor = UIColor(hexStr: "#8AAE65")
                                pageMenu.unSelectedItemTitleColor = .black.withAlphaComponent(0.6)
                                return pageMenu
                }()
    override func viewDidLoad() {
        super.viewDidLoad()
                                view.backgroundColor = .gray
    }
                override func setUI() {
                                view.addSubview(pageMenu)
                                pageMenu.snp.makeConstraints { make in
                                                make.edges.equalToSuperview()
                                }
                }
}
XQMuse/Root/Me/VC/SpendingDetailVC.swift
New file
@@ -0,0 +1,96 @@
//
//  SpendingDetailVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
import FFPage
import JQTools
import SPPageMenu
class SpendingDetailVC: BaseVC {
                lazy var adapterVC:FFAdapterViewController = {
                                let adapterVC = FFAdapterViewController()
                                adapterVC.style = .subRefresh
                                adapterVC.ignoreTopSpeace = JQ_NavBarHeight
                                return adapterVC
                }()
                lazy var headerVC:SpendingDetailHeaderVC = {
                                let headerVC  = SpendingDetailHeaderVC()
                                return headerVC
                }()
                lazy var menuVC:SpendingDetailMenuVC = {
                                let menuVC  = SpendingDetailMenuVC()
                                return menuVC
                }()
                lazy var pageVC:FFPageViewController = {
                                let pageViewController = FFPageViewController()
                                pageViewController.view.backgroundColor = .clear
                                pageViewController.delegate = self
                                pageViewController.scrollview.backgroundColor = .clear
                                return pageViewController
                }()
    override func viewDidLoad() {
        super.viewDidLoad()
                                title = "余额明细"
    }
                override func setUI() {
                                adapterVC.headHeight = 410
                                adapterVC.headViewController = headerVC
                                adapterVC.menuHeight = 44
                                adapterVC.menuViewController = menuVC
                                adapterVC.pageViewController = pageVC
                                adapterVC.ignoreTopSpeace = JQ_NavBarHeight + 20
                                addChild(adapterVC)
                                view.addSubview(adapterVC.view)
                                adapterVC.didMove(toParent: self)
                                // 分类委托
                                menuVC.pageMenu.delegate = self
                                menuVC.pageMenu.bridgeScrollView = pageVC.scrollview
                                adapterVC.scrollview.delegate = self
                }
}
extension SpendingDetailVC : FFPageViewControllerDelegate{
                func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt {
                                return  3
                }
                func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController {
                                let v = SpendingDetailContentVC(page: page)
                                return v
                }
                func pageViewController(_ pageViewController: FFPageViewController, currentPageChanged currentPage: Int) {
                }
}
extension SpendingDetailVC : SPPageMenuDelegate {
                func pageMenu(_ pageMenu: SPPageMenu, itemSelectedAt index: Int) {
                                pageVC.scroll(toPage: index, animation: true)
                }
}
extension SpendingDetailVC:UIScrollViewDelegate{
                func scrollViewDidScroll(_ scrollView: UIScrollView) {
                                let v = min(scrollView.contentOffset.y / JQ_NavBarHeight, 1)
                                navigationController?.navigationBar.standardAppearance.backgroundColor = .white.withAlphaComponent(v)
                }
}
XQMuse/Root/Me/VC/UserProfileVC.swift
@@ -8,18 +8,33 @@
import UIKit
import QMUIKit
import JQTools
import TZImagePickerController
class UserProfileVC: BaseVC {
                @IBOutlet weak var image_user: UIImageView!
                @IBOutlet weak var tf_gender: QMUITextField!
                @IBOutlet weak var tf_birthday: QMUITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
                private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小
                private var clipFrame:CGRect{
                                get{
                                                if clipSize.width == 0 || clipSize.height == 0 {
                                                                assert(false,"未设置裁剪框大小")
                                                }
                                                var clipFrame = CGRect.zero
                                                clipFrame.size = clipSize
                                                clipFrame.origin = CGPoint(x: (JQ_ScreenW - clipSize.width)/2.0, y: (JQ_ScreenH - clipSize.width)/2.0)
                                                return clipFrame
                                }
                }
                override func viewDidLoad() {
                                super.viewDidLoad()
                                title = "个人资料"
    }
                }
                override func setUI() {
                                super.setUI()
                                view.backgroundColor = UIColor(hexString:"#fafafa")
@@ -32,9 +47,34 @@
                }
                @objc func selectUserProfile(){
                                JQ_ImagePickerTool.getSharedInstance().singleImage({ [unowned self] image in
                                                self.image_user.image = image
                                }, clipSize: CGSize(width: JQ_ScreenW, height: JQ_ScreenW))
                                CommonAlertSheetView.show(items: ["拍照","从相册选择"]) {[unowned self] index in
                                                if index == 0{
                                                                guard UIImagePickerController.isSourceTypeAvailable(.camera) else{
                                                                                alertError(msg: "当前设备相机不可用");return
                                                                }
                                                                let p = UIImagePickerController()
                                                                p.delegate = self
                                                                p.modalPresentationStyle = .fullScreen
                                                                p.allowsEditing = true
                                                                p.sourceType = .camera
                                                                p.cameraDevice = .front
                                                                self.present(p, animated: true)
                                                }else{
                                                                let p = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self)
                                                                p!.modalPresentationStyle = .fullScreen
                                                                p!.allowTakeVideo = false
                                                                p!.allowTakePicture = false
                                                                p!.sortAscendingByModificationDate = true
                                                                p!.scaleAspectFillCrop = true
                                                                p!.allowPickingVideo = false
                                                                p!.maxImagesCount = 1
                                                                p!.allowCrop = true
                                                                p!.cropRect = self.clipFrame
                                                                self.present(p!, animated: true, completion: nil)
                                                }
                                }
                }
}
@@ -42,13 +82,12 @@
                func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
                                if textField == tf_gender{
                                                let items = ["男","女"]
                                                let items = ["男","女","保密"]
                                                CommonAlertSheetView.show(items: items) {[weak self] index in
                                                                guard let weakSelf = self else { return }
                                                                guard textField.text != items[index] else {return}
                                                                textField.text = items[index]
                                                                var gender:GenderType!
                                                                if index == 0{
                                                                                gender = .man
                                                                }else{
@@ -59,12 +98,53 @@
                                if textField == tf_birthday{
                                                view.endEditing(true)
                                                CommonDatePickerView.show(before: 60, after: 0, type: .YMD) { year, month, day,_,_ in
                                                                textField.text = String(format: "%ld-%02ld-%02ld", year!,month!,day!)
                                                BitrhdayPickerView.show(title: "", type: .YMD) { date in
                                                }
//                                                CommonDatePickerView.show(before: 60, after: 0, type: .YMD) { year, month, day,_,_ in
//                                                                textField.text = String(format: "%ld-%02ld-%02ld", year!,month!,day!)
//                                                }
                                                return false
                                }
                                return false
                }
}
extension UserProfileVC:TZImagePickerControllerDelegate{
                public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool) {
                                picker.selectedAssets = NSMutableArray(array: assets)
                }
                public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingAndEditingVideo coverImage: UIImage!, outputPath: String!, error errorMsg: String!) {
                }
}
extension UserProfileVC:UIImagePickerControllerDelegate & UINavigationControllerDelegate{
                //成功选取
                public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
                                var image:UIImage?
                                image = (info[UIImagePickerController.InfoKey.originalImage] as! UIImage)
                                let corpperVC = VPImageCropperViewController(image: image!, cropFrame: clipFrame, limitScaleRatio: Int(image!.scale))
                                corpperVC.modalPresentationStyle = .fullScreen
                                DispatchQueue.main.asyncAfter(deadline: .now()+1.0) {
                                                JQ_currentViewController().present(corpperVC, animated: true, completion: nil)
                                }
                                unowned let weakSelf = self
                                corpperVC.imageCropperHandler { (vc, image) in
                                } cancelClouse: {
                                                corpperVC.dismiss(animated: true) {
                                                }
                                }
                                picker.dismiss(animated: true) {
                                }
                }
}
XQMuse/Root/Me/VC/WalletRechargeVC.swift
@@ -6,19 +6,101 @@
//
import UIKit
import JQTools
class WalletRechargeVC: BaseVC {
                @IBOutlet weak var btn_handle: UIButton!
                @IBOutlet weak var collectionView: UICollectionView!
                @IBOutlet weak var cons_collectionHei: NSLayoutConstraint!
                private var selectIndexPath = IndexPath(row: 0, section: 0)
                private     let cellW = (JQ_ScreenW - (24 * 2) - 3 * 27) / 4
                private let cellH:Double = 35
                override func viewDidLoad() {
        super.viewDidLoad()
                                title = "冥愈币充值"
                                title = "疗愈币充值"
                                collectionView.delegate = self
                                collectionView.dataSource = self
                                collectionView.contentInset = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)
                                collectionView.register(WalletCCell.self, forCellWithReuseIdentifier: "_WalletCCell")
                                let h = ceil(4.0 / 4.0) * cellH + floor((4.0 - 1) / 4.0) * 27.0
                                cons_collectionHei.constant = h
                                view.layoutIfNeeded()
    }
                override func setUI() {
                                view.backgroundColor = UIColor(hexString: "f6f6f6")
                                btn_handle.localGradientColor(cornerRadius: 20)
                                btn_handle.jq_gradientNibColor(colorArr:  [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 20)
                }
}
extension WalletRechargeVC:UICollectionViewDelegate & UICollectionViewDataSource{
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                selectIndexPath = indexPath
                                collectionView.reloadData()
                }
                func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                                return 4
                }
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_WalletCCell", for: indexPath) as! WalletCCell
                                cell.selectAt(indexPath == selectIndexPath)
                                return cell
                }
}
extension WalletRechargeVC:UICollectionViewDelegateFlowLayout{
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
                                return CGSize(width: cellW, height:cellH)
                }
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
                                return 27
                }
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
                                return 27
                }
}
class WalletCCell:UICollectionViewCell{
                private lazy var lable_title:UILabel = {
                                let label = UILabel()
                                label.text = "疗愈币0"
                                label.textAlignment = .center
                                label.textColor = UIColor(hexString: "#A9C393")
                                label.font = UIFont.systemFont(ofSize: 16, weight: .medium)
                                return label
                }()
                override init(frame: CGRect) {
                                super.init(frame: frame)
                            jq_borderWidth = 1
                            jq_borderColor = UIColor(hexString: "#ABC695")
                            jq_cornerRadius = 8
                                contentView.addSubview(lable_title)
                                lable_title.snp.makeConstraints { make in
                                                make.center.equalToSuperview()
                                }
                }
                func selectAt(_ state:Bool){
                                backgroundColor = state ? UIColor(hexString: "#8EA47A") : .white
                                lable_title.textColor = state ? .white:UIColor(hexString: "#8EA47A")
                                jq_borderWidth = state ? 0:1
                }
                required init?(coder: NSCoder) {
                                fatalError("init(coder:) has not been implemented")
                }
}
XQMuse/Root/Me/VC/WalletRechargeVC.xib
@@ -12,6 +12,8 @@
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="WalletRechargeVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="btn_handle" destination="dho-ek-UFQ" id="iQC-VU-0Zr"/>
                <outlet property="collectionView" destination="dtD-pA-jk2" id="DeN-fT-Su7"/>
                <outlet property="cons_collectionHei" destination="bd9-0q-BAP" id="w77-cG-RlO"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
@@ -37,6 +39,7 @@
                            </constraints>
                            <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Cco-HP-q4Y">
                                <size key="itemSize" width="128" height="128"/>
                                <size key="estimatedItemSize" width="128" height="128"/>
                                <size key="headerReferenceSize" width="0.0" height="0.0"/>
                                <size key="footerReferenceSize" width="0.0" height="0.0"/>
                                <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
XQMuse/Root/Me/VC/WalletVC.swift
@@ -22,8 +22,27 @@
                                let vc = BankWithdrawVC()
                                push(vc: vc)
                }
                @IBAction func recharegeAction(_ sender: UIButton) {
                                let vc = WalletRechargeVC()
                                push(vc: vc)
                }
                @IBAction func spendingDetailAction(_ sender: TapBtn) {
                                let vc = SpendingDetailVC()
                                push(vc: vc)
                }
                @IBAction func commentAction(_ sender: TapBtn) {
                                let vc = MyCommentListVC()
                                vc.title = "我的推荐"
                                push(vc: vc)
                }
                @IBAction func popularizeAction(_ sender: TapBtn) {
                                let vc = MyCommentListVC()
                                vc.title = "推广活动"
                                push(vc: vc)
                }
}
XQMuse/Root/Me/VC/WalletVC.xib
@@ -46,7 +46,7 @@
                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="充值(冥愈币)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bTT-6A-oeC">
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="充值(疗愈币)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bTT-6A-oeC">
                            <rect key="frame" x="44.999999999999993" y="123.00000000000001" width="76.333333333333314" height="11.666666666666671"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="11.5" id="yb2-0Y-fpK"/>
@@ -146,7 +146,7 @@
                <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="d4r-tq-ZJ0">
                    <rect key="frame" x="16" y="382" width="361" height="102"/>
                    <subviews>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="n8v-Zl-Su5">
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="n8v-Zl-Su5" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                            <rect key="frame" x="0.0" y="0.0" width="361" height="51"/>
                            <subviews>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CTT-vC-tUN">
@@ -181,8 +181,11 @@
                                <constraint firstItem="ENG-Pn-f6h" firstAttribute="centerY" secondItem="n8v-Zl-Su5" secondAttribute="centerY" id="xls-qW-7T6"/>
                                <constraint firstItem="Irv-xl-Q2e" firstAttribute="leading" secondItem="vao-0m-YYq" secondAttribute="trailing" constant="10" id="yDc-Lz-o7V"/>
                            </constraints>
                            <connections>
                                <action selector="spendingDetailAction:" destination="-1" eventType="touchUpInside" id="yBs-99-1bf"/>
                            </connections>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qMJ-nq-nHL">
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qMJ-nq-nHL" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                            <rect key="frame" x="0.0" y="51" width="361" height="51"/>
                            <subviews>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="phv-ve-Q3R">
@@ -217,10 +220,13 @@
                                <constraint firstAttribute="trailing" secondItem="phv-ve-Q3R" secondAttribute="trailing" id="eTh-bT-tcn"/>
                                <constraint firstItem="J7r-og-biD" firstAttribute="centerY" secondItem="qMJ-nq-nHL" secondAttribute="centerY" id="l80-3F-Xjw"/>
                            </constraints>
                            <connections>
                                <action selector="commentAction:" destination="-1" eventType="touchUpInside" id="aV0-eL-keT"/>
                            </connections>
                        </view>
                    </subviews>
                </stackView>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rlo-Ro-eiy">
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rlo-Ro-eiy" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                    <rect key="frame" x="14.666666666666657" y="519.66666666666663" width="364" height="66.333333333333371"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="推荐心泉疗愈给好友" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XgZ-h6-scF">
@@ -252,6 +258,9 @@
                            <real key="value" value="15"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                    <connections>
                        <action selector="popularizeAction:" destination="-1" eventType="touchUpInside" id="nEo-xe-0gc"/>
                    </connections>
                </view>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
XQMuse/Root/Me/VC/WatchHistoryDetailVC.swift
New file
@@ -0,0 +1,66 @@
//
//  WatchHistoryDetailVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
import JQTools
class WatchHistoryDetailVC: BaseVC {
                private var page:Int!
                private var collectionView:UICollectionView!
                init(page:Int) {
                                super.init(nibName: nil, bundle: nil)
                                self.page = page
                }
                required init?(coder: NSCoder) {
                                fatalError("init(coder:) has not been implemented")
                }
    override func viewDidLoad() {
        super.viewDidLoad()
                                let layout = UICollectionViewFlowLayout()
                                collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
                                collectionView.delegate = self
                                collectionView.dataSource = self
                                collectionView.showsVerticalScrollIndicator = false
                                collectionView.register(UINib(nibName: "HomeRelaxBannerCCell", bundle: nil), forCellWithReuseIdentifier: "_HomeRelaxBannerCCell")
                                collectionView.contentInset = UIEdgeInsets(top: 29, left: 29.5 , bottom: 0, right: 29.5)
                                view.addSubview(collectionView)
                                collectionView.snp.makeConstraints { make in
                                                make.edges.equalToSuperview()
                                }
    }
}
extension WatchHistoryDetailVC:UICollectionViewDelegate & UICollectionViewDataSource{
                func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                                return 5
                }
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBannerCCell", for: indexPath) as! HomeRelaxBannerCCell
                                cell.contentView.backgroundColor = .jq_randomColor
                                return cell
                }
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
                                                let vc = HomeItemDetailVC()
                                                JQ_currentViewController().jq_push(vc: vc)
                }
}
extension WatchHistoryDetailVC:UICollectionViewDelegateFlowLayout{
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
                                let w = (JQ_ScreenW - (29.5 * 2) - 18.5) / 2
                                return CGSize(width: w, height: w * 1.3124)
                }
}
XQMuse/Root/Me/VC/WatchHistoryVC.swift
New file
@@ -0,0 +1,128 @@
//
//  WatchHistoryVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
import UIKit
import FFPage
//收藏、观看历史、我的已购 共用
enum WatchType{
                case collect
                case history
                case payment
}
class WatchHistoryVC: BaseVC {
                @IBOutlet weak var btn_tap1: TapBtn!
                @IBOutlet weak var label_title: UILabel!
                @IBOutlet weak var label_subTitle: UILabel!
                @IBOutlet weak var btn_tap2: TapBtn!
                @IBOutlet weak var label2_title: UILabel!
                @IBOutlet weak var label2_subTitle: UILabel!
                @IBOutlet weak var view_menu: UIView!
                private var currentPage:Int = 0
                private var watchType:WatchType!
                lazy var pageViewController:FFPageViewController = {
                                let pageVC = FFPageViewController()
                                pageVC.view.backgroundColor = .clear
                                pageVC.scrollview.backgroundColor = .clear
                                pageVC.scrollview.bounces = false
                                return pageVC
                }()
                private var lineImage:UIImageView = {
                                let img = UIImageView(image: UIImage(named: "icon_unline_1"))
                                return img
                }()
    override func viewDidLoad() {
        super.viewDidLoad()
                                switch watchType {
                                                case .collect:
                                                                title = "我的收藏"
                                                                label_title.text = "疗 愈"
                                                                label_subTitle.text = "Meditate"
                                                                label2_title.text = "课 程"
                                                                label2_subTitle.text = "course"
                                                case .history:
                                                                title = "观看历史"
                                                                label_title.text = "疗 愈"
                                                                label_subTitle.text = "Meditate"
                                                                label2_title.text = "课 程"
                                                                label2_subTitle.text = "course"
                                                case .payment:
                                                                title = "我的已购"
                                                                label_title.text = "已购课程"
                                                                label_subTitle.text = "Purchased course"
                                                                label2_title.text = "已购音频"
                                                                label2_subTitle.text = "Purchased audio"
                                                case .none:
                                                                title = ""
                                }
    }
                init(type:WatchType) {
                                super.init(nibName: nil, bundle: nil)
                                self.watchType = type
                }
                required init?(coder: NSCoder) {
                                fatalError("init(coder:) has not been implemented")
                }
                override func setUI() {
                                view_menu.addSubview(lineImage)
                                lineImage.snp.makeConstraints { make in
                                                make.centerX.equalTo(btn_tap1)
                                                make.bottom.equalTo(btn_tap1.snp.bottom).offset(-10)
                                }
                                view.addSubview(pageViewController.view)
                                pageViewController.view.backgroundColor = .clear
                                pageViewController.delegate = self
                                pageViewController.view.snp.makeConstraints { make in
                                                make.top.equalTo(view_menu.snp.bottom)
                                                make.left.right.bottom.equalToSuperview()
                                }
                }
                @IBAction func tapAction(_ sender: TapBtn) {
                            let page    = sender == btn_tap1 ? 0:1
                                pageViewController.scroll(toPage: page, animation: true)
                }
}
extension WatchHistoryVC:FFPageViewControllerDelegate{
                func pageViewController(_ pageViewController: FFPageViewController, currentPageChanged currentPage: Int) {
                                if self.currentPage != currentPage{
                                                self.currentPage = currentPage
                                                let tapBtn = currentPage == 0 ? btn_tap1:btn_tap2
                                                UIView.animate(withDuration: 0.2) {
                                                                self.lineImage.snp.remakeConstraints { make in
                                                                                make.centerX.equalTo(tapBtn!)
                                                                                make.bottom.equalTo(tapBtn!.snp.bottom).offset(-10)
                                                                }
                                                                self.view.layoutIfNeeded()
                                                }
                                }
                }
                func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt {
                                return 2
                }
                func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController {
                                return WatchHistoryDetailVC(page: page)
                }
}
XQMuse/Root/Me/VC/WatchHistoryVC.xib
New file
@@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <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" customClass="WatchHistoryVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="btn_tap1" destination="N3r-qV-jvT" id="oWD-sw-wme"/>
                <outlet property="btn_tap2" destination="mVV-m5-BSs" id="G99-Mh-MuH"/>
                <outlet property="label2_subTitle" destination="8Eu-M8-JYF" id="hp6-Tg-fAN"/>
                <outlet property="label2_title" destination="nAp-Sq-gu0" id="Frq-1O-zgu"/>
                <outlet property="label_subTitle" destination="hyo-uT-Ae1" id="aYl-Cy-9LD"/>
                <outlet property="label_title" destination="XWw-mG-mV5" id="BPD-RX-0ZG"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
                <outlet property="view_menu" destination="zId-Ju-XAg" id="ud9-83-QGK"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="top" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_voice_top" translatesAutoresizingMaskIntoConstraints="NO" id="Ftr-21-raE">
                    <rect key="frame" x="0.0" y="0.0" width="393" height="297"/>
                </imageView>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="krq-u0-CTV">
                    <rect key="frame" x="0.0" y="59" width="393" height="5"/>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="5" id="McQ-3H-a8M"/>
                    </constraints>
                </view>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zId-Ju-XAg">
                    <rect key="frame" x="0.0" y="64" width="393" height="81"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_watch" translatesAutoresizingMaskIntoConstraints="NO" id="RgY-jg-oLt">
                            <rect key="frame" x="0.0" y="0.0" width="393" height="81"/>
                        </imageView>
                        <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="9Gk-LV-9V4">
                            <rect key="frame" x="25" y="0.0" width="343" height="81"/>
                            <subviews>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="N3r-qV-jvT" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                                    <rect key="frame" x="0.0" y="0.0" width="171.66666666666666" height="81"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="疗 愈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XWw-mG-mV5">
                                            <rect key="frame" x="65" y="22" width="41.333333333333343" height="17"/>
                                            <constraints>
                                                <constraint firstAttribute="height" constant="17" id="cfA-1T-aTt"/>
                                            </constraints>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
                                            <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Meditate" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hyo-uT-Ae1">
                                            <rect key="frame" x="72.333333333333329" y="47.666666666666671" width="27" height="5"/>
                                            <constraints>
                                                <constraint firstAttribute="height" constant="5" id="c3U-Za-4xX"/>
                                            </constraints>
                                            <fontDescription key="fontDescription" type="system" pointSize="6"/>
                                            <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                    </subviews>
                                    <constraints>
                                        <constraint firstItem="XWw-mG-mV5" firstAttribute="top" secondItem="N3r-qV-jvT" secondAttribute="top" constant="22" id="Btc-Wn-xy0"/>
                                        <constraint firstItem="hyo-uT-Ae1" firstAttribute="centerX" secondItem="XWw-mG-mV5" secondAttribute="centerX" id="Cuv-YX-AiP"/>
                                        <constraint firstItem="XWw-mG-mV5" firstAttribute="centerX" secondItem="N3r-qV-jvT" secondAttribute="centerX" id="RvO-hP-jzZ"/>
                                        <constraint firstItem="hyo-uT-Ae1" firstAttribute="top" secondItem="XWw-mG-mV5" secondAttribute="bottom" constant="8.5" id="gr1-DB-2fz"/>
                                    </constraints>
                                    <connections>
                                        <action selector="tapAction:" destination="-1" eventType="touchUpInside" id="nJx-kT-Yle"/>
                                    </connections>
                                </view>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mVV-m5-BSs" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                                    <rect key="frame" x="171.66666666666663" y="0.0" width="171.33333333333337" height="81"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="课 程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nAp-Sq-gu0">
                                            <rect key="frame" x="65.000000000000028" y="22" width="41.333333333333343" height="17"/>
                                            <constraints>
                                                <constraint firstAttribute="height" constant="17" id="gqk-lU-Pbs"/>
                                            </constraints>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
                                            <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="course" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8Eu-M8-JYF">
                                            <rect key="frame" x="75.333333333333343" y="47.666666666666671" width="20.666666666666671" height="5"/>
                                            <constraints>
                                                <constraint firstAttribute="height" constant="5" id="FJw-5a-vtX"/>
                                            </constraints>
                                            <fontDescription key="fontDescription" type="system" pointSize="6"/>
                                            <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                    </subviews>
                                    <constraints>
                                        <constraint firstItem="8Eu-M8-JYF" firstAttribute="top" secondItem="nAp-Sq-gu0" secondAttribute="bottom" constant="8.5" id="8h6-bc-b0I"/>
                                        <constraint firstItem="nAp-Sq-gu0" firstAttribute="top" secondItem="mVV-m5-BSs" secondAttribute="top" constant="22" id="Pgl-Av-7Ka"/>
                                        <constraint firstItem="nAp-Sq-gu0" firstAttribute="centerX" secondItem="mVV-m5-BSs" secondAttribute="centerX" id="TqA-Yd-lA6"/>
                                        <constraint firstItem="8Eu-M8-JYF" firstAttribute="centerX" secondItem="nAp-Sq-gu0" secondAttribute="centerX" id="sG8-kp-DCj"/>
                                    </constraints>
                                    <connections>
                                        <action selector="tapAction:" destination="-1" eventType="touchUpInside" id="cmv-tT-7ND"/>
                                    </connections>
                                </view>
                            </subviews>
                        </stackView>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="trailing" secondItem="9Gk-LV-9V4" secondAttribute="trailing" constant="25" id="C4w-IL-9vF"/>
                        <constraint firstItem="RgY-jg-oLt" firstAttribute="top" secondItem="zId-Ju-XAg" secondAttribute="top" id="DFf-ON-gYP"/>
                        <constraint firstAttribute="bottom" secondItem="RgY-jg-oLt" secondAttribute="bottom" id="Db1-tn-ror"/>
                        <constraint firstAttribute="bottom" secondItem="9Gk-LV-9V4" secondAttribute="bottom" id="M5i-e6-fxR"/>
                        <constraint firstItem="9Gk-LV-9V4" firstAttribute="top" secondItem="zId-Ju-XAg" secondAttribute="top" id="Ppa-PZ-JO7"/>
                        <constraint firstAttribute="width" secondItem="zId-Ju-XAg" secondAttribute="height" multiplier="1:0.2064" id="SkF-7k-UeZ"/>
                        <constraint firstItem="9Gk-LV-9V4" firstAttribute="leading" secondItem="zId-Ju-XAg" secondAttribute="leading" constant="25" id="o92-12-fHA"/>
                        <constraint firstAttribute="trailing" secondItem="RgY-jg-oLt" secondAttribute="trailing" id="oVk-br-x7f"/>
                        <constraint firstItem="RgY-jg-oLt" firstAttribute="leading" secondItem="zId-Ju-XAg" secondAttribute="leading" id="phi-Pn-8aZ"/>
                    </constraints>
                </view>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="zId-Ju-XAg" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="59l-W0-yWN"/>
                <constraint firstItem="krq-u0-CTV" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="67n-rS-jQ1"/>
                <constraint firstItem="zId-Ju-XAg" firstAttribute="top" secondItem="krq-u0-CTV" secondAttribute="bottom" id="Ehp-8m-Ag3"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Ftr-21-raE" secondAttribute="trailing" id="SlS-JK-9S6"/>
                <constraint firstItem="krq-u0-CTV" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="Tkh-Oy-nNu"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="krq-u0-CTV" secondAttribute="trailing" id="ZBF-Ed-mgR"/>
                <constraint firstItem="zId-Ju-XAg" firstAttribute="trailing" secondItem="fnl-2z-Ty3" secondAttribute="trailing" id="dIN-I8-SMl"/>
                <constraint firstItem="Ftr-21-raE" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="sDG-Mw-g3L"/>
                <constraint firstItem="Ftr-21-raE" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="suc-1n-FFx"/>
            </constraints>
            <point key="canvasLocation" x="58.778625954198468" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
        <image name="bg_voice_top" width="390" height="297"/>
        <image name="bg_watch" width="390" height="80.666664123535156"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
XQMuse/Root/Other/View/BitrhdayPickerView.swift
New file
@@ -0,0 +1,292 @@
//
//  BitrhdayPickerView.swift
//  JKFitness
//
//  Created by 无故事王国 on 2024/2/20.
//
import UIKit
import JQTools
class BitrhdayPickerView: UIView {
                enum DateType {
                                case YMD
                                case YM
                }
                private var view_content:UIView = {
                                let v = UIView()
                                v.backgroundColor = .white
                                return v
                }()
                private var label_title:UILabel = {
                                let label = UILabel()
                                label.font = .systemFont(ofSize: 18, weight: .medium)
                                label.textColor = .black.withAlphaComponent(0.8)
                                return label
                }()
                private var btn_close:UIButton = {
                                let btn = UIButton(type: .custom)
                                btn.setTitle("取消", for: .normal)
                                btn.titleLabel?.font = UIFont.systemFont(ofSize: 16)
                                btn.setTitleColor(.black.withAlphaComponent(0.59), for: .normal)
                                return btn
                }()
                private var btn_complete:UIButton = {
                                let btn = UIButton(type: .custom)
                                btn.setTitle("确认", for: .normal)
                                btn.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .medium)
                                btn.setTitleColor(Def_ThemeColor, for: .normal)
                                return btn
                }()
                private var picker:UIPickerView = {
                                let pickerView = UIPickerView()
                                return pickerView
                }()
                private var minYear:Int = 1960
                private var maxYear:Int = Date().jq_nowYear() + 1
                private var defaultYear:Int?
                private var defaultMonth:Int?
                private var defaultDay:Int?
                private var resultValue:Double = 0
                private var type:DateType!
                private var clouse:((Date)->Void)!
                override init(frame: CGRect) {
                                super.init(frame: frame)
                                backgroundColor = UIColor.black.withAlphaComponent(0)
                                addSubview(view_content)
                                view_content.snp.makeConstraints { make in
                                                make.left.right.equalToSuperview()
                                                make.bottom.equalToSuperview().offset(JQ_ScreenW * 0.6769)
                                                make.height.equalTo(JQ_ScreenW * 0.6769)
                                }
                                view_content.addSubview(btn_complete)
                                btn_complete.snp.makeConstraints { make in
                                                make.top.equalTo(18)
                                                make.right.equalTo(-14)
                                                make.height.equalTo(18)
                                }
                                view_content.addSubview(btn_close)
                                btn_close.addTarget(self, action: #selector(closeAction), for: .touchUpInside)
                                btn_close.snp.makeConstraints { make in
                                                make.top.equalTo(18)
                                                make.left.equalTo(14)
                                                make.height.equalTo(18)
                                }
                                view_content.addSubview(label_title)
                                label_title.snp.makeConstraints { make in
                                                make.top.equalTo(30)
                                                make.centerX.equalToSuperview()
                                                make.height.equalTo(18)
                                }
                                layoutIfNeeded()
                }
                private func setUI(){
                                var items = Array<String>()
                                if type == .YMD{
                                                items = ["年","月","日"]
                                }else{
                                                items = ["年","月"]
                                }
                                let stackView =  UIStackView()
                                stackView.axis = .horizontal
                                stackView.distribution = .fillEqually
                                view_content.addSubview(stackView)
                                stackView.snp.makeConstraints { make in
                                                make.top.equalTo(label_title.snp.bottom).offset(27)
                                                make.height.equalTo(25)
                                                make.centerX.equalToSuperview()
                                                make.left.equalToSuperview().offset(30)
                                                make.right.equalToSuperview().offset(-30)
                                }
                                for (_,v) in items.enumerated(){
                                                let label     = UILabel()
                                                label.text = v
                                                label.font = UIFont.systemFont(ofSize: 18, weight: .medium)
                                                label.textColor = .black.withAlphaComponent(0.8)
                                                label.textAlignment = .center
                                                stackView.addArrangedSubview(label)
                                }
                                view_content.addSubview(picker)
                                picker.delegate = self
                                picker.dataSource = self
                                picker.snp.makeConstraints { make in
                                                make.top.equalTo(label_title.snp.bottom).offset(50)
                                                make.bottom.equalToSuperview().offset(-13)
                                                make.left.equalToSuperview().offset(30)
                                                make.right.equalToSuperview().offset(-30)
                                }
                                btn_complete.addTarget(self, action: #selector(completeAction), for: .touchUpInside)
                }
                override func layoutIfNeeded() {
                                super.layoutIfNeeded()
                                view_content.jq_addCorners(corner: [.topLeft,.topRight], radius: 22)
                }
                required init?(coder: NSCoder) {
                                fatalError("init(coder:) has not been implemented")
                }
                static func show(title:String,type:DateType,defaultYear:Int? = nil,defaultMonth:Int? = nil,defaultDay:Int? = nil,minYear:Int = 1960,clouse:@escaping (Date)->Void){
                                let pickerView = BitrhdayPickerView(frame: sceneDelegate?.window?.frame ?? .zero)
                                pickerView.minYear = minYear
                                pickerView.clouse = clouse
                                pickerView.label_title.text = title
                                pickerView.defaultYear = defaultYear
                                pickerView.defaultMonth = defaultMonth
                                pickerView.defaultDay = defaultDay
                                pickerView.type = type
                                sceneDelegate?.window?.addSubview(pickerView)
                                pickerView.setUI()
                                UIView.animate(withDuration: 0.35) {
                                                pickerView.backgroundColor = UIColor.black.withAlphaComponent(0.7)
                                                pickerView.view_content.snp.updateConstraints { make in
                                                                make.bottom.equalToSuperview()
                                                }
                                                pickerView.layoutIfNeeded()
                                }completion: { _ in
                                                pickerView.picker.reloadAllComponents()
                                                switch type {
                                                                case .YMD:
                                                                                if defaultDay != nil{
                                                                                                pickerView.picker.selectRow(defaultDay! - 1, inComponent: 2, animated: true)
                                                                                }
                                                                                fallthrough
                                                                case .YM:
                                                                                if defaultYear != nil{
                                                                                                pickerView.picker.selectRow(defaultYear! - pickerView.minYear, inComponent: 0, animated: true)
                                                                                }
                                                                                if defaultMonth != nil{
                                                                                                pickerView.picker.selectRow(defaultMonth! - 1, inComponent: 1, animated: true)
                                                                                }
                                                }
                                                pickerView.picker.reloadAllComponents()
                                }
                }
                @objc func closeAction(){
                                UIView.animate(withDuration: 0.35) {
                                                self.backgroundColor = UIColor.black.withAlphaComponent(0)
                                                self.view_content.snp.updateConstraints { make in
                                                                make.bottom.equalToSuperview().offset(JQ_ScreenW * 0.7846)
                                                }
                                                self.layoutIfNeeded()
                                }completion: { _ in
                                                self.removeFromSuperview()
                                }
                }
                @objc func completeAction(){
                                let year = picker.selectedRow(inComponent: 0) + minYear
                                let month = picker.selectedRow(inComponent: 1) + 1
                                var day = 1
                                if type == .YMD{
                                                day = picker.selectedRow(inComponent: 2) + 1
                                }
                                clouse(Date.jq_format(year: year, month: month, day: day,hour: 0,minute: 0,second: 0)!)
                                closeAction()
                }
}
extension BitrhdayPickerView:UIPickerViewDelegate & UIPickerViewDataSource{
                func numberOfComponents(in pickerView: UIPickerView) -> Int {
                                if type == .YMD{
                                                return 3
                                }
                                if type == .YM{
                                                return 2
                                }
                                return 0
                }
                func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
                                return 40
                }
                func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
                                var resultLabel:UILabel?
                                if let label = view as? UILabel{
                                                resultLabel = label
                                }else{
                                                resultLabel = UILabel()
                                                resultLabel!.font = UIFont.systemFont(ofSize: 18,weight: .semibold)
                                                resultLabel!.textColor = UIColor(hexString: "#3C3C3C")
                                                resultLabel!.textAlignment = .center
                                }
                                if component == 0{
                                                resultLabel!.text = "\(minYear + row)"
                                }
                                if component == 1{
                                                resultLabel!.text = String(format: "%02ld", row + 1)
                                }
                                if component == 2{
                                                resultLabel!.text = String(format: "%02ld", row + 1)
                                }
                                return resultLabel!
                }
                func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
                                if component == 0{
                                                return maxYear - minYear
                                }
                                if component == 1{
                                                if pickerView.selectedRow(inComponent: 0) + minYear == Date().jq_nowYear(){
                                                                return Date().jq_nowMonth()
                                                }
                                                return 12
                                }
                                if component == 2{
                                                if pickerView.selectedRow(inComponent: 0) + minYear == Date().jq_nowYear() && pickerView.selectedRow(inComponent: 1) + 1 == Date().jq_nowMonth(){
                                                                return Date().jq_nowDay()
                                                }
                                                return Date.jq_getDays(pickerView.selectedRow(inComponent: 0) + minYear, pickerView.selectedRow(inComponent: 1) + 1)
                                }
                                return 0
                }
                func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
                                if component == 0{
                                                pickerView.reloadComponent(1)
                                                if type == .YMD{
                                                                pickerView.reloadComponent(2)
                                                }
                                }
                                if component == 1 && type == .YMD{
                                                pickerView.reloadComponent(2)
                                }
                }
}
XQMuse/Root/Other/View/CommonAlertSheetView.swift
@@ -32,7 +32,7 @@
                static func show(items:[String],clouse:@escaping (Int)->Void){
                                let alertView = CommonAlertSheetView.jq_loadNibView()
                                alertView.frame = sceneDelegate?.window?.frame ?? .zero
                                alertView.cons_tableHei.constant = CGFloat(items.count * 50)
                                alertView.cons_tableHei.constant = CGFloat(items.count * 56)
                                sceneDelegate?.window?.addSubview(alertView)
                                alertView.cons_viewBottom.constant = 0
                                alertView.items = items
@@ -48,7 +48,7 @@
                override func layoutSubviews() {
                                super.layoutSubviews()
                                let totalH = Double(items.count * 50) + UIDevice.jq_safeEdges.bottom + 50
                                let totalH = Double(items.count * 56) + UIDevice.jq_safeEdges.bottom + 56
                                view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20,height: totalH)
                }
@@ -86,7 +86,7 @@
                }
                func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
                                return 50
                                return 56
                }
}
@@ -100,8 +100,8 @@
                                selectionStyle = .none
                                label_content = UILabel()
                                label_content.text = "123"
                                label_content.font = UIFont.systemFont(ofSize: 16, weight: .medium)
                                label_content.textColor = .black.withAlphaComponent(0.8)
                                label_content.font = UIFont.systemFont(ofSize: 15, weight: .medium)
                                label_content.textColor = UIColor(hexString: "#6B6B6B")
                                contentView.addSubview(label_content)
                                label_content.snp.makeConstraints { make in
@@ -109,7 +109,7 @@
                                }
                                let lineView = UIView()
                                lineView.backgroundColor = UIColor(hexStr: "#DBDBE7")
                                lineView.backgroundColor = UIColor(hexStr: "#979797").withAlphaComponent(0.05)
                                contentView.addSubview(lineView)
                                lineView.snp.makeConstraints { make in
                                                make.left.equalTo(15)
XQMuse/Root/Other/View/CommonAlertSheetView.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22154" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22130"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -11,19 +11,22 @@
    <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="CommonAlertSheetView" customModule="WanPai" customModuleProvider="target">
        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="CommonAlertSheetView" customModule="XQMuse" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZCi-js-xyb">
                    <rect key="frame" x="0.0" y="678" width="393" height="174"/>
                    <rect key="frame" x="0.0" y="654" width="393" height="198"/>
                    <subviews>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5zv-r1-Tbh">
                            <rect key="frame" x="0.0" y="100" width="393" height="32"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                            <rect key="frame" x="0.0" y="100" width="393" height="56"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="56" id="UcK-me-kEd"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="取消">
                                <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
                                <color key="titleColor" red="0.19607843137254902" green="0.19607843137254902" blue="0.19607843137254902" alpha="0.90000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
                            </state>
                            <connections>
                                <action selector="hiddenAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="ngJ-yG-9b2"/>