From 5ca691ec52cb4bb64841b0d85252af762e48c2ca Mon Sep 17 00:00:00 2001 From: 杨锴 <841720330@qq.com> Date: 星期四, 22 八月 2024 14:58:07 +0800 Subject: [PATCH] fix UI --- XQMuse/Root/Me/VC/SpendingDetailContentVC.swift | 65 + XQMuse/Root/Me/VC/WalletVC.xib | 17 XQMuse/Root/Me/VC/SpendingDetailVC.swift | 96 ++ XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@3x.png | 0 XQMuse/Root/Me/VC/WalletVC.swift | 19 XQMuse/Root/Me/TCell/ContactCustomerTCell.xib | 69 + XQMuse/Root/Me/VC/WatchHistoryVC.swift | 128 +++ XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/Contents.json | 22 XQMuse/Root/Me/VC/WatchHistoryDetailVC.swift | 66 + XQMuse/Root/Me/VC/SpendingDetailInfoVC.swift | 26 XQMuse.xcodeproj/project.pbxproj | 80 ++ XQMuse/Root/Me/VC/ContactCustomerVC.swift | 42 + XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/Contents.json | 22 XQMuse/Root/Me/VC/SpendingDetailMenuVC.swift | 53 + XQMuse/Root/Me/VC/UserProfileVC.swift | 104 ++ XQMuse/Root/Other/View/CommonAlertSheetView.xib | 17 XQMuse/Root/Me/TCell/SpendingDetailContentTCell.swift | 16 XQMuse/Root/Me/VC/SpendingDetailInfoVC.xib | 231 ++++++ XQMuse/Root/Me/VC/WalletRechargeVC.xib | 3 XQMuse/Root/Me/VC/WalletRechargeVC.swift | 86 ++ XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@2x.png | 0 XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift | 27 XQMuse/Root/Me/TCell/SpendingDetailContentTCell.xib | 77 ++ XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib | 119 +++ XQMuse/Root/Home/HomeVC.swift | 3 XQMuse/Root/Me/MeVC.swift | 12 XQMuse/Root/Me/VC/WatchHistoryVC.xib | 152 ++++ XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/Contents.json | 22 XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib | 110 +++ XQMuse/Root/Home/VC/PaymentOrderVC.xib | 4 XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@3x.png | 0 XQMuse/Root/Me/VC/MyCommentListVC.swift | 15 XQMuse/Root/Me/VC/SpendingDetailHeaderVC.swift | 21 XQMuse/Root/Other/View/CommonAlertSheetView.swift | 12 XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@3x.png | 0 XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@2x.png | 0 XQMuse/Root/Me/VC/ContactCustomerVC.xib | 95 ++ XQMuse/Root/Me/TCell/ContactCustomerTCell.swift | 16 XQMuse/Root/Other/View/BitrhdayPickerView.swift | 292 ++++++++ 40 files changed, 2,099 insertions(+), 40 deletions(-) diff --git a/XQMuse.xcodeproj/project.pbxproj b/XQMuse.xcodeproj/project.pbxproj index 6af2c23..33a787f 100644 --- a/XQMuse.xcodeproj/project.pbxproj +++ b/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; }; diff --git a/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/Contents.json new file mode 100644 index 0000000..d829187 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/Contents.json @@ -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 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@2x.png b/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@2x.png new file mode 100644 index 0000000..149e1e1 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@3x.png b/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@3x.png new file mode 100644 index 0000000..1d1d72c --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_question_1.imageset/icon_question@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/Contents.json new file mode 100644 index 0000000..ef97581 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/Contents.json @@ -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 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@2x.png b/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@2x.png new file mode 100644 index 0000000..e3c992c --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@3x.png b/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@3x.png new file mode 100644 index 0000000..6153de5 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_unline_1.imageset/icon_unline_1@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/Contents.json b/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/Contents.json new file mode 100644 index 0000000..83af910 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/Contents.json @@ -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 + } +} diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@2x.png b/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@2x.png new file mode 100644 index 0000000..f50ff70 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@3x.png b/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@3x.png new file mode 100644 index 0000000..08011de --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_watch.imageset/bg_watch@3x.png Binary files differ diff --git a/XQMuse/Root/Home/HomeVC.swift b/XQMuse/Root/Home/HomeVC.swift index 03cb7ed..7f0097f 100644 --- a/XQMuse/Root/Home/HomeVC.swift +++ b/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() { diff --git a/XQMuse/Root/Home/VC/PaymentOrderVC.xib b/XQMuse/Root/Home/VC/PaymentOrderVC.xib index 129fdf5..73f19a8 100644 --- a/XQMuse/Root/Home/VC/PaymentOrderVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/MeVC.swift b/XQMuse/Root/Me/MeVC.swift index a1bfe6f..3f3227b 100644 --- a/XQMuse/Root/Me/MeVC.swift +++ b/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) } ///分享 diff --git a/XQMuse/Root/Me/TCell/ContactCustomerTCell.swift b/XQMuse/Root/Me/TCell/ContactCustomerTCell.swift new file mode 100644 index 0000000..542c536 --- /dev/null +++ b/XQMuse/Root/Me/TCell/ContactCustomerTCell.swift @@ -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 + } +} diff --git a/XQMuse/Root/Me/TCell/ContactCustomerTCell.xib b/XQMuse/Root/Me/TCell/ContactCustomerTCell.xib new file mode 100644 index 0000000..8dc1400 --- /dev/null +++ b/XQMuse/Root/Me/TCell/ContactCustomerTCell.xib @@ -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> diff --git a/XQMuse/Root/Me/TCell/SpendingDetailContentTCell.swift b/XQMuse/Root/Me/TCell/SpendingDetailContentTCell.swift new file mode 100644 index 0000000..5584de7 --- /dev/null +++ b/XQMuse/Root/Me/TCell/SpendingDetailContentTCell.swift @@ -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 + } +} diff --git a/XQMuse/Root/Me/TCell/SpendingDetailContentTCell.xib b/XQMuse/Root/Me/TCell/SpendingDetailContentTCell.xib new file mode 100644 index 0000000..55e088d --- /dev/null +++ b/XQMuse/Root/Me/TCell/SpendingDetailContentTCell.xib @@ -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> diff --git a/XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift b/XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift new file mode 100644 index 0000000..2d69f0f --- /dev/null +++ b/XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift @@ -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 + } +} diff --git a/XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib b/XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib new file mode 100644 index 0000000..8473d7f --- /dev/null +++ b/XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib @@ -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> diff --git a/XQMuse/Root/Me/VC/ContactCustomerVC.swift b/XQMuse/Root/Me/VC/ContactCustomerVC.swift new file mode 100644 index 0000000..ea559d8 --- /dev/null +++ b/XQMuse/Root/Me/VC/ContactCustomerVC.swift @@ -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 + } + + +} diff --git a/XQMuse/Root/Me/VC/ContactCustomerVC.xib b/XQMuse/Root/Me/VC/ContactCustomerVC.xib new file mode 100644 index 0000000..45b6eeb --- /dev/null +++ b/XQMuse/Root/Me/VC/ContactCustomerVC.xib @@ -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> diff --git a/XQMuse/Root/Me/VC/MyCommentListVC.swift b/XQMuse/Root/Me/VC/MyCommentListVC.swift new file mode 100644 index 0000000..8fbec2d --- /dev/null +++ b/XQMuse/Root/Me/VC/MyCommentListVC.swift @@ -0,0 +1,15 @@ +// +// MyCommentListVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/22. +// + +import UIKit + +class MyCommentListVC: BaseVC { + + override func viewDidLoad() { + super.viewDidLoad() + } +} diff --git a/XQMuse/Root/Me/VC/SpendingDetailContentVC.swift b/XQMuse/Root/Me/VC/SpendingDetailContentVC.swift new file mode 100644 index 0000000..bfa4d0c --- /dev/null +++ b/XQMuse/Root/Me/VC/SpendingDetailContentVC.swift @@ -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 + } +} diff --git a/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.swift b/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.swift new file mode 100644 index 0000000..2ef81f8 --- /dev/null +++ b/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.swift @@ -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) + } +} diff --git a/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib b/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib new file mode 100644 index 0000000..4aafcbf --- /dev/null +++ b/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib @@ -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> diff --git a/XQMuse/Root/Me/VC/SpendingDetailInfoVC.swift b/XQMuse/Root/Me/VC/SpendingDetailInfoVC.swift new file mode 100644 index 0000000..2bf8519 --- /dev/null +++ b/XQMuse/Root/Me/VC/SpendingDetailInfoVC.swift @@ -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") + } + +} diff --git a/XQMuse/Root/Me/VC/SpendingDetailInfoVC.xib b/XQMuse/Root/Me/VC/SpendingDetailInfoVC.xib new file mode 100644 index 0000000..9614a2d --- /dev/null +++ b/XQMuse/Root/Me/VC/SpendingDetailInfoVC.xib @@ -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> diff --git a/XQMuse/Root/Me/VC/SpendingDetailMenuVC.swift b/XQMuse/Root/Me/VC/SpendingDetailMenuVC.swift new file mode 100644 index 0000000..1d5b431 --- /dev/null +++ b/XQMuse/Root/Me/VC/SpendingDetailMenuVC.swift @@ -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() + } + } +} diff --git a/XQMuse/Root/Me/VC/SpendingDetailVC.swift b/XQMuse/Root/Me/VC/SpendingDetailVC.swift new file mode 100644 index 0000000..5ac6d50 --- /dev/null +++ b/XQMuse/Root/Me/VC/SpendingDetailVC.swift @@ -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) + } +} + diff --git a/XQMuse/Root/Me/VC/UserProfileVC.swift b/XQMuse/Root/Me/VC/UserProfileVC.swift index 226ef82..995c1e1 100644 --- a/XQMuse/Root/Me/VC/UserProfileVC.swift +++ b/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) { + + } + } +} diff --git a/XQMuse/Root/Me/VC/WalletRechargeVC.swift b/XQMuse/Root/Me/VC/WalletRechargeVC.swift index 838b141..da89b83 100644 --- a/XQMuse/Root/Me/VC/WalletRechargeVC.swift +++ b/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") } } diff --git a/XQMuse/Root/Me/VC/WalletRechargeVC.xib b/XQMuse/Root/Me/VC/WalletRechargeVC.xib index 16ccdbd..88bd960 100644 --- a/XQMuse/Root/Me/VC/WalletRechargeVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/VC/WalletVC.swift b/XQMuse/Root/Me/VC/WalletVC.swift index 031707b..77d84cf 100644 --- a/XQMuse/Root/Me/VC/WalletVC.swift +++ b/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) + } + } diff --git a/XQMuse/Root/Me/VC/WalletVC.xib b/XQMuse/Root/Me/VC/WalletVC.xib index 5bfa300..78a23b4 100644 --- a/XQMuse/Root/Me/VC/WalletVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/VC/WatchHistoryDetailVC.swift b/XQMuse/Root/Me/VC/WatchHistoryDetailVC.swift new file mode 100644 index 0000000..f2320ff --- /dev/null +++ b/XQMuse/Root/Me/VC/WatchHistoryDetailVC.swift @@ -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) + } +} diff --git a/XQMuse/Root/Me/VC/WatchHistoryVC.swift b/XQMuse/Root/Me/VC/WatchHistoryVC.swift new file mode 100644 index 0000000..0852de8 --- /dev/null +++ b/XQMuse/Root/Me/VC/WatchHistoryVC.swift @@ -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) + } +} diff --git a/XQMuse/Root/Me/VC/WatchHistoryVC.xib b/XQMuse/Root/Me/VC/WatchHistoryVC.xib new file mode 100644 index 0000000..3b480b5 --- /dev/null +++ b/XQMuse/Root/Me/VC/WatchHistoryVC.xib @@ -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> diff --git a/XQMuse/Root/Other/View/BitrhdayPickerView.swift b/XQMuse/Root/Other/View/BitrhdayPickerView.swift new file mode 100644 index 0000000..2c96537 --- /dev/null +++ b/XQMuse/Root/Other/View/BitrhdayPickerView.swift @@ -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) + } + } +} diff --git a/XQMuse/Root/Other/View/CommonAlertSheetView.swift b/XQMuse/Root/Other/View/CommonAlertSheetView.swift index f00f3be..4ac98fa 100644 --- a/XQMuse/Root/Other/View/CommonAlertSheetView.swift +++ b/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) diff --git a/XQMuse/Root/Other/View/CommonAlertSheetView.xib b/XQMuse/Root/Other/View/CommonAlertSheetView.xib index da07b0c..67069e5 100644 --- a/XQMuse/Root/Other/View/CommonAlertSheetView.xib +++ b/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"/> -- Gitblit v1.7.1