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