From 572899a6a72fb71c0a29ec5774de3b61ddd4bd7e Mon Sep 17 00:00:00 2001 From: 杨锴 <841720330@qq.com> Date: 星期四, 15 八月 2024 18:59:56 +0800 Subject: [PATCH] UI --- XQMuse/Root/Home/VC/CommentListVC.swift | 139 ++ XQMuse/Root/Home/View/HomeHeaderVC.swift | 54 + XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@3x.png | 0 XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@3x.png | 0 XQMuse/Root/Home/TCell/CommentUserInputContentTCell.xib | 57 + XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@2x.png | 0 XQMuse/Root/Course/CourseVC.swift | 143 ++ XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@3x.png | 0 XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/Contents.json | 22 XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib | 4 XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@2x.png | 0 XQMuse.xcodeproj/project.pbxproj | 126 ++ XQMuse/Root/Home/View/PaymentOrderResultTopView.swift | 35 XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@2x.png | 0 XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@3x.png | 0 XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/Contents.json | 22 XQMuse/Root/Other/View/ChooseOptView.swift | 84 + XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/Contents.json | 22 XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift | 33 XQMuse/Root/Home/VC/HomeItemDetailVC.swift | 16 XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@2x.png | 0 XQMuse/Config/HoverHeaderFlowLayout.swift | 99 + XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/Contents.json | 22 XQMuse/Root/Home/HomeVC.swift | 29 XQMuse/Root/Home/VC/CommentListVC.xib | 165 +++ XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/icon_freee.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@2x.png | 0 XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@3x.png | 0 XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift | 20 XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib | 99 + XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@3x.png | 0 XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/Contents.json | 22 XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift | 12 XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift | 38 XQMuse/Root/Home/VC/PaymentOrderResultVC.xib | 22 XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift | 30 XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.xib | 91 + XQMuse/Root/Home/VC/PaymentOrderVC.swift | 49 XQMuse/Root/Home/VC/HomeTyroGuideVC.swift | 37 XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@2x.png | 0 XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@3x.png | 0 XQMuse/Root/Home/View/CommentCommentHeaderView.swift | 89 + XQMuse/Root/Me/VC/VIPCenterVC.xib | 205 +++ XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@3x.png | 0 XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift | 17 XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@2x.png | 0 XQMuse/Root/Home/VC/PaymentOrderResultVC.swift | 140 ++ XQMuse/Root/Home/View/PaymentOrderResultTopView.xib | 121 ++ XQMuse/Root/Other/View/ChooseOptView.xib | 88 + XQMuse/Root/Home/TCell/CommentUserInputContentTCell.swift | 24 XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@2x.png | 0 XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@2x.png | 0 XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift | 102 + XQMuse/Root/Home/VC/PaymentOrderVC.xib | 487 +++++++++ XQMuse/Root/Me/VC/VIPCenterVC.swift | 127 ++ XQMuse/Assets.xcassets/Btns/btn_good.imageset/Contents.json | 22 XQMuse/Root/Home/VC/HomeItemDetailVC.xib | 4 XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@2x.png | 0 XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib | 25 70 files changed, 3,053 insertions(+), 22 deletions(-) diff --git a/XQMuse.xcodeproj/project.pbxproj b/XQMuse.xcodeproj/project.pbxproj index d3eec54..61bf7ac 100644 --- a/XQMuse.xcodeproj/project.pbxproj +++ b/XQMuse.xcodeproj/project.pbxproj @@ -7,6 +7,12 @@ objects = { /* Begin PBXBuildFile section */ + 1300BD3B2C6DFB1C000BCA5E /* VIPCenterVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1300BD3A2C6DFB1C000BCA5E /* VIPCenterVC.xib */; }; + 1300BD3C2C6DFB1C000BCA5E /* VIPCenterVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1300BD392C6DFB1C000BCA5E /* VIPCenterVC.swift */; }; + 130913EA2C6DE33200418201 /* PaymentOrderResultVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130913E92C6DE33200418201 /* PaymentOrderResultVC.xib */; }; + 130913EB2C6DE33200418201 /* PaymentOrderResultVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130913E82C6DE33200418201 /* PaymentOrderResultVC.swift */; }; + 130913EE2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130913ED2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.xib */; }; + 130913EF2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130913EC2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.swift */; }; 130B76592C6C4963006371AF /* HomeRelaxVoiceCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130B76572C6C4963006371AF /* HomeRelaxVoiceCCell.swift */; }; 130B765A2C6C4963006371AF /* HomeRelaxVoiceCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130B76582C6C4963006371AF /* HomeRelaxVoiceCCell.xib */; }; 130B765D2C6C4C33006371AF /* HomeItemListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130B765B2C6C4C33006371AF /* HomeItemListVC.swift */; }; @@ -19,8 +25,15 @@ 131E75C52C6B87C500E2C85D /* ForgotPasswordChangeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 131E75C22C6B87C400E2C85D /* ForgotPasswordChangeVC.swift */; }; 132EB01C2C6B32B200990429 /* RegisterVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132EB01A2C6B32B200990429 /* RegisterVC.swift */; }; 132EB01D2C6B32B200990429 /* RegisterVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 132EB01B2C6B32B200990429 /* RegisterVC.xib */; }; + 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 */; }; 134783CF2C6C86EC0096C736 /* PlaySettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134783CE2C6C86EC0096C736 /* PlaySettingView.swift */; }; 134783D12C6C86F40096C736 /* PlaySettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134783D02C6C86F40096C736 /* PlaySettingView.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 */; }; 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 */; }; @@ -29,6 +42,13 @@ 1377768E2C6AFD25004FF994 /* LoginVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1377768C2C6AFD25004FF994 /* LoginVC.xib */; }; 137776922C6AFE69004FF994 /* SearchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 137776902C6AFE69004FF994 /* SearchVC.swift */; }; 137776932C6AFE69004FF994 /* SearchVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 137776912C6AFE69004FF994 /* SearchVC.xib */; }; + 1377B40C2C6D936A00CF7CA5 /* CommentUserInputContentTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1377B40A2C6D936A00CF7CA5 /* CommentUserInputContentTCell.swift */; }; + 1377B40D2C6D936A00CF7CA5 /* CommentUserInputContentTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1377B40B2C6D936A00CF7CA5 /* CommentUserInputContentTCell.xib */; }; + 1377B40F2C6D93FA00CF7CA5 /* CommentCommentHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1377B40E2C6D93FA00CF7CA5 /* CommentCommentHeaderView.swift */; }; + 1377B4112C6DAA1900CF7CA5 /* ChooseOptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1377B4102C6DAA1900CF7CA5 /* ChooseOptView.swift */; }; + 1377B4132C6DAA2000CF7CA5 /* ChooseOptView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1377B4122C6DAA2000CF7CA5 /* ChooseOptView.xib */; }; + 1377B4162C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1377B4142C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.swift */; }; + 1377B4172C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1377B4152C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.xib */; }; 137ABE342C6B3F64003A91C5 /* ForgotPasswordVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 137ABE322C6B3F64003A91C5 /* ForgotPasswordVC.swift */; }; 137ABE352C6B3F64003A91C5 /* ForgotPasswordVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 137ABE332C6B3F64003A91C5 /* ForgotPasswordVC.xib */; }; 137ABE382C6B6641003A91C5 /* WebVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 137ABE372C6B6641003A91C5 /* WebVC.swift */; }; @@ -77,10 +97,21 @@ 13D256B72C6C68F8006FC2D7 /* ShareView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13D256B62C6C68F8006FC2D7 /* ShareView.xib */; }; 13E0FBF92C6C8BDE009997AE /* CountdownChooseListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13E0FBF82C6C8BDE009997AE /* CountdownChooseListView.swift */; }; 13E0FBFB2C6C8BE3009997AE /* CountdownChooseListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13E0FBFA2C6C8BE3009997AE /* CountdownChooseListView.xib */; }; + 13E160202C6CB8930027F781 /* CommentListVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13E1601F2C6CB8930027F781 /* CommentListVC.xib */; }; + 13E160212C6CB8930027F781 /* CommentListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13E1601E2C6CB8930027F781 /* CommentListVC.swift */; }; + 13EFCDBE2C6DCF5800B51AE6 /* HomeTyroGuideVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13EFCDBD2C6DCF5800B51AE6 /* HomeTyroGuideVC.swift */; }; + 13EFCDC12C6DD27A00B51AE6 /* PaymentOrderVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13EFCDBF2C6DD27A00B51AE6 /* PaymentOrderVC.swift */; }; + 13EFCDC22C6DD27A00B51AE6 /* PaymentOrderVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13EFCDC02C6DD27A00B51AE6 /* PaymentOrderVC.xib */; }; D80DD987C5D5D23DD582763D /* Pods_XQMuse.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 627C13604519744922724D64 /* Pods_XQMuse.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 1300BD392C6DFB1C000BCA5E /* VIPCenterVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VIPCenterVC.swift; sourceTree = "<group>"; }; + 1300BD3A2C6DFB1C000BCA5E /* VIPCenterVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VIPCenterVC.xib; sourceTree = "<group>"; }; + 130913E82C6DE33200418201 /* PaymentOrderResultVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentOrderResultVC.swift; sourceTree = "<group>"; }; + 130913E92C6DE33200418201 /* PaymentOrderResultVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PaymentOrderResultVC.xib; sourceTree = "<group>"; }; + 130913EC2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeRelaxBanner_2_1_CCell.swift; sourceTree = "<group>"; }; + 130913ED2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeRelaxBanner_2_1_CCell.xib; sourceTree = "<group>"; }; 130B76572C6C4963006371AF /* HomeRelaxVoiceCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeRelaxVoiceCCell.swift; sourceTree = "<group>"; }; 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>"; }; @@ -93,8 +124,15 @@ 131E75C32C6B87C400E2C85D /* ForgotPasswordChangeVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ForgotPasswordChangeVC.xib; sourceTree = "<group>"; }; 132EB01A2C6B32B200990429 /* RegisterVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterVC.swift; sourceTree = "<group>"; }; 132EB01B2C6B32B200990429 /* RegisterVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RegisterVC.xib; sourceTree = "<group>"; }; + 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>"; }; 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>"; }; + 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>"; }; 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>"; }; @@ -103,6 +141,13 @@ 1377768C2C6AFD25004FF994 /* LoginVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LoginVC.xib; sourceTree = "<group>"; }; 137776902C6AFE69004FF994 /* SearchVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchVC.swift; sourceTree = "<group>"; }; 137776912C6AFE69004FF994 /* SearchVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SearchVC.xib; sourceTree = "<group>"; }; + 1377B40A2C6D936A00CF7CA5 /* CommentUserInputContentTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommentUserInputContentTCell.swift; sourceTree = "<group>"; }; + 1377B40B2C6D936A00CF7CA5 /* CommentUserInputContentTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CommentUserInputContentTCell.xib; sourceTree = "<group>"; }; + 1377B40E2C6D93FA00CF7CA5 /* CommentCommentHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommentCommentHeaderView.swift; sourceTree = "<group>"; }; + 1377B4102C6DAA1900CF7CA5 /* ChooseOptView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChooseOptView.swift; sourceTree = "<group>"; }; + 1377B4122C6DAA2000CF7CA5 /* ChooseOptView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ChooseOptView.xib; sourceTree = "<group>"; }; + 1377B4142C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Home_Style_4_Inner_1_CCell.swift; sourceTree = "<group>"; }; + 1377B4152C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Home_Style_4_Inner_1_CCell.xib; sourceTree = "<group>"; }; 137ABE322C6B3F64003A91C5 /* ForgotPasswordVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForgotPasswordVC.swift; sourceTree = "<group>"; }; 137ABE332C6B3F64003A91C5 /* ForgotPasswordVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ForgotPasswordVC.xib; sourceTree = "<group>"; }; 137ABE372C6B6641003A91C5 /* WebVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebVC.swift; sourceTree = "<group>"; }; @@ -153,6 +198,11 @@ 13D256B62C6C68F8006FC2D7 /* ShareView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ShareView.xib; sourceTree = "<group>"; }; 13E0FBF82C6C8BDE009997AE /* CountdownChooseListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountdownChooseListView.swift; sourceTree = "<group>"; }; 13E0FBFA2C6C8BE3009997AE /* CountdownChooseListView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CountdownChooseListView.xib; sourceTree = "<group>"; }; + 13E1601E2C6CB8930027F781 /* CommentListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommentListVC.swift; sourceTree = "<group>"; }; + 13E1601F2C6CB8930027F781 /* CommentListVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CommentListVC.xib; sourceTree = "<group>"; }; + 13EFCDBD2C6DCF5800B51AE6 /* HomeTyroGuideVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTyroGuideVC.swift; sourceTree = "<group>"; }; + 13EFCDBF2C6DD27A00B51AE6 /* PaymentOrderVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentOrderVC.swift; sourceTree = "<group>"; }; + 13EFCDC02C6DD27A00B51AE6 /* PaymentOrderVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PaymentOrderVC.xib; sourceTree = "<group>"; }; 257B6AA3157A71622E7EABC6 /* Pods-XQMuse.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-XQMuse.debug.xcconfig"; path = "Target Support Files/Pods-XQMuse/Pods-XQMuse.debug.xcconfig"; sourceTree = "<group>"; }; 627C13604519744922724D64 /* Pods_XQMuse.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_XQMuse.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B934C5A58089E8AEA47DCFE7 /* Pods-XQMuse.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-XQMuse.release.xcconfig"; path = "Target Support Files/Pods-XQMuse/Pods-XQMuse.release.xcconfig"; sourceTree = "<group>"; }; @@ -170,6 +220,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 1300BD382C6DFB0A000BCA5E /* VC */ = { + isa = PBXGroup; + children = ( + 1300BD392C6DFB1C000BCA5E /* VIPCenterVC.swift */, + 1300BD3A2C6DFB1C000BCA5E /* VIPCenterVC.xib */, + ); + path = VC; + sourceTree = "<group>"; + }; 131E75C62C6B87CC00E2C85D /* VC */ = { isa = PBXGroup; children = ( @@ -185,6 +244,24 @@ 139466462C6B8E0200F6FB15 /* UpdatePhoneVC.xib */, ); path = VC; + sourceTree = "<group>"; + }; + 134A452F2C6E0D3800538D78 /* VC */ = { + isa = PBXGroup; + children = ( + 134A45302C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift */, + 134A45342C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift */, + ); + path = VC; + sourceTree = "<group>"; + }; + 134A45362C6E165F00538D78 /* CCell */ = { + isa = PBXGroup; + children = ( + 134A45372C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift */, + 134A45382C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib */, + ); + path = CCell; sourceTree = "<group>"; }; 137175C42C6C3C2100B38EF1 /* Fonts */ = { @@ -218,6 +295,13 @@ 130B765C2C6C4C33006371AF /* HomeItemListVC.xib */, 1385E0082C6C57A900AADB1F /* HomeItemDetailVC.swift */, 1385E0092C6C57A900AADB1F /* HomeItemDetailVC.xib */, + 13E1601E2C6CB8930027F781 /* CommentListVC.swift */, + 13E1601F2C6CB8930027F781 /* CommentListVC.xib */, + 13EFCDBD2C6DCF5800B51AE6 /* HomeTyroGuideVC.swift */, + 13EFCDBF2C6DD27A00B51AE6 /* PaymentOrderVC.swift */, + 13EFCDC02C6DD27A00B51AE6 /* PaymentOrderVC.xib */, + 130913E82C6DE33200418201 /* PaymentOrderResultVC.swift */, + 130913E92C6DE33200418201 /* PaymentOrderResultVC.xib */, ); path = VC; sourceTree = "<group>"; @@ -316,8 +400,9 @@ 13985DB32C69B7D40046B6DC /* Config */ = { isa = PBXGroup; children = ( - 137175C42C6C3C2100B38EF1 /* Fonts */, 139C165F2C6A0FBB00A924D9 /* TestLeftRightCollectionViewFlowLayout.swift */, + 1336EFA42C6DEB550075E070 /* HoverHeaderFlowLayout.swift */, + 137175C42C6C3C2100B38EF1 /* Fonts */, 13985DB42C69B7DF0046B6DC /* Def.swift */, 13985DB72C69B80D0046B6DC /* Themes.swift */, ); @@ -327,9 +412,12 @@ 13985DBB2C69DDDC0046B6DC /* View */ = { isa = PBXGroup; children = ( + 1377B40E2C6D93FA00CF7CA5 /* CommentCommentHeaderView.swift */, 13985DBC2C69DDF30046B6DC /* HomeTopMenuView.swift */, 13985DBE2C69DDF90046B6DC /* HomeTopMenuView.xib */, 13985DCF2C69F2A80046B6DC /* HomeHeaderVC.swift */, + 1336EFA62C6DEC640075E070 /* PaymentOrderResultTopView.swift */, + 1336EFA82C6DEC6B0075E070 /* PaymentOrderResultTopView.xib */, ); path = View; sourceTree = "<group>"; @@ -347,6 +435,10 @@ 130B76582C6C4963006371AF /* HomeRelaxVoiceCCell.xib */, 1385E0042C6C558200AADB1F /* HomeRelaxBanner_2_CCell.swift */, 1385E0052C6C558200AADB1F /* HomeRelaxBanner_2_CCell.xib */, + 1377B4142C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.swift */, + 1377B4152C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.xib */, + 130913EC2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.swift */, + 130913ED2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.xib */, ); path = CCell; sourceTree = "<group>"; @@ -354,6 +446,8 @@ 13985DC52C69E9260046B6DC /* Course */ = { isa = PBXGroup; children = ( + 134A45362C6E165F00538D78 /* CCell */, + 134A452F2C6E0D3800538D78 /* VC */, 13985DC62C69E9550046B6DC /* CourseVC.swift */, ); path = Course; @@ -385,6 +479,7 @@ 13985DCA2C69E9C10046B6DC /* Me */ = { isa = PBXGroup; children = ( + 1300BD382C6DFB0A000BCA5E /* VC */, 13985DCD2C69EA160046B6DC /* MeVC.swift */, ); path = Me; @@ -401,6 +496,8 @@ 139C165C2C6A0AC600A924D9 /* Home_Style_3_TCell.xib */, 130ED7E52C6AEF5900D0736E /* Home_Style_4_TCell.swift */, 130ED7E62C6AEF5900D0736E /* Home_Style_4_TCell.xib */, + 1377B40A2C6D936A00CF7CA5 /* CommentUserInputContentTCell.swift */, + 1377B40B2C6D936A00CF7CA5 /* CommentUserInputContentTCell.xib */, ); path = TCell; sourceTree = "<group>"; @@ -414,6 +511,8 @@ 134783D02C6C86F40096C736 /* PlaySettingView.xib */, 13E0FBF82C6C8BDE009997AE /* CountdownChooseListView.swift */, 13E0FBFA2C6C8BE3009997AE /* CountdownChooseListView.xib */, + 1377B4102C6DAA1900CF7CA5 /* ChooseOptView.swift */, + 1377B4122C6DAA2000CF7CA5 /* ChooseOptView.xib */, ); path = View; sourceTree = "<group>"; @@ -496,13 +595,18 @@ buildActionMask = 2147483647; files = ( 13985DD42C69FC1F0046B6DC /* Home_Style_1_TCell.xib in Resources */, + 1377B4132C6DAA2000CF7CA5 /* ChooseOptView.xib in Resources */, 130B765E2C6C4C33006371AF /* HomeItemListVC.xib in Resources */, 1385E0072C6C558200AADB1F /* HomeRelaxBanner_2_CCell.xib in Resources */, 132EB01D2C6B32B200990429 /* RegisterVC.xib in Resources */, + 1336EFA92C6DEC6B0075E070 /* PaymentOrderResultTopView.xib in Resources */, 137ABE352C6B3F64003A91C5 /* ForgotPasswordVC.xib in Resources */, 1377768E2C6AFD25004FF994 /* LoginVC.xib in Resources */, + 130913EE2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.xib in Resources */, 130ED7E82C6AEF5900D0736E /* Home_Style_4_TCell.xib in Resources */, + 1377B4172C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.xib in Resources */, 13985D9F2C69B2440046B6DC /* Assets.xcassets in Resources */, + 13EFCDC22C6DD27A00B51AE6 /* PaymentOrderVC.xib in Resources */, 13D256B72C6C68F8006FC2D7 /* ShareView.xib in Resources */, 13985DC32C69E0BF0046B6DC /* HomeTopMenuCCell.xib in Resources */, 139C165E2C6A0AC600A924D9 /* Home_Style_3_TCell.xib in Resources */, @@ -510,18 +614,23 @@ 13985DA22C69B2440046B6DC /* Base in Resources */, 134783D12C6C86F40096C736 /* PlaySettingView.xib in Resources */, 139C165A2C6A053000A924D9 /* Home_Style_2_TCell.xib in Resources */, + 1300BD3B2C6DFB1C000BCA5E /* VIPCenterVC.xib in Resources */, 139466482C6B8E0200F6FB15 /* UpdatePhoneVC.xib in Resources */, + 134A453A2C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib in Resources */, + 1377B40D2C6D936A00CF7CA5 /* CommentUserInputContentTCell.xib in Resources */, 137175CC2C6C412A00B38EF1 /* BackgroundVoiceVC.xib in Resources */, 137776932C6AFE69004FF994 /* SearchVC.xib in Resources */, 13985DBF2C69DDF90046B6DC /* HomeTopMenuView.xib in Resources */, 1385E00B2C6C57A900AADB1F /* HomeItemDetailVC.xib in Resources */, 137ABE3C2C6B6BDD003A91C5 /* ForgotPasswordInputCodeVC.xib in Resources */, + 130913EA2C6DE33200418201 /* PaymentOrderResultVC.xib in Resources */, 130ED7ED2C6AF05C00D0736E /* Home_Style_4_Inner_CCell.xib in Resources */, 137175C62C6C3C4700B38EF1 /* SourceHanSansCN-Regular.otf in Resources */, 131E75C42C6B87C500E2C85D /* ForgotPasswordChangeVC.xib in Resources */, 139C16642C6A108A00A924D9 /* HomeRelaxBannerCCell.xib in Resources */, 13E0FBFB2C6C8BE3009997AE /* CountdownChooseListView.xib in Resources */, 130B765A2C6C4963006371AF /* HomeRelaxVoiceCCell.xib in Resources */, + 13E160202C6CB8930027F781 /* CommentListVC.xib in Resources */, 139228B12C6B8374006F3CB6 /* Popup_1_View.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -584,17 +693,26 @@ 13985DB22C69B7B00046B6DC /* TapBtn.swift in Sources */, 13985DBA2C69B8ED0046B6DC /* HomeVC.swift in Sources */, 13985DAF2C69B7B00046B6DC /* BaseNav.swift in Sources */, + 134A45352C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift in Sources */, + 134A45392C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift in Sources */, 13985D982C69B2410046B6DC /* SceneDelegate.swift in Sources */, 13985DBD2C69DDF30046B6DC /* HomeTopMenuView.swift in Sources */, + 1377B4112C6DAA1900CF7CA5 /* ChooseOptView.swift in Sources */, 1385E0062C6C558200AADB1F /* HomeRelaxBanner_2_CCell.swift in Sources */, + 130913EB2C6DE33200418201 /* PaymentOrderResultVC.swift in Sources */, 137ABE342C6B3F64003A91C5 /* ForgotPasswordVC.swift in Sources */, + 13EFCDBE2C6DCF5800B51AE6 /* HomeTyroGuideVC.swift in Sources */, + 134A45322C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift in Sources */, 139C16602C6A0FBB00A924D9 /* TestLeftRightCollectionViewFlowLayout.swift in Sources */, 13985DC72C69E9550046B6DC /* CourseVC.swift in Sources */, 1385E0022C6C4F1200AADB1F /* Services.swift in Sources */, 13985DB82C69B80D0046B6DC /* Themes.swift in Sources */, 13985DD02C69F2A80046B6DC /* HomeHeaderVC.swift in Sources */, + 1336EFA52C6DEB550075E070 /* HoverHeaderFlowLayout.swift in Sources */, 13985DB52C69B7DF0046B6DC /* Def.swift in Sources */, 139228AF2C6B836B006F3CB6 /* Popup_1_View.swift in Sources */, + 1336EFA72C6DEC640075E070 /* PaymentOrderResultTopView.swift in Sources */, + 13EFCDC12C6DD27A00B51AE6 /* PaymentOrderVC.swift in Sources */, 13985DCE2C69EA160046B6DC /* MeVC.swift in Sources */, 13985DCC2C69E9FA0046B6DC /* PavilionVC.swift in Sources */, 13985DC42C69E0BF0046B6DC /* HomeTopMenuCCell.swift in Sources */, @@ -609,10 +727,16 @@ 13E0FBF92C6C8BDE009997AE /* CountdownChooseListView.swift in Sources */, 130ED7EE2C6AF05C00D0736E /* Home_Style_4_Inner_CCell.swift in Sources */, 139C165D2C6A0AC600A924D9 /* Home_Style_3_TCell.swift in Sources */, + 1377B40F2C6D93FA00CF7CA5 /* CommentCommentHeaderView.swift in Sources */, + 1377B40C2C6D936A00CF7CA5 /* CommentUserInputContentTCell.swift in Sources */, 1385DFFA2C6C4EBC00AADB1F /* RefreshModel.swift in Sources */, 139C16632C6A108A00A924D9 /* HomeRelaxBannerCCell.swift in Sources */, 131E75C52C6B87C500E2C85D /* ForgotPasswordChangeVC.swift in Sources */, 130ED7E72C6AEF5900D0736E /* Home_Style_4_TCell.swift in Sources */, + 130913EF2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.swift in Sources */, + 1300BD3C2C6DFB1C000BCA5E /* VIPCenterVC.swift in Sources */, + 1377B4162C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.swift in Sources */, + 13E160212C6CB8930027F781 /* CommentListVC.swift in Sources */, 137ABE3B2C6B6BDD003A91C5 /* ForgotPasswordInputCodeVC.swift in Sources */, 130B765D2C6C4C33006371AF /* HomeItemListVC.swift in Sources */, 1385E0002C6C4F1200AADB1F /* NetworkRequest.swift in Sources */, diff --git a/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/Contents.json b/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/Contents.json new file mode 100644 index 0000000..097eb9b --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "btn_close_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_close_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@2x.png b/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@2x.png new file mode 100644 index 0000000..bae2b5a --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@3x.png b/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@3x.png new file mode 100644 index 0000000..52c682b --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/Contents.json b/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/Contents.json new file mode 100644 index 0000000..98cb4a5 --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "btn_collect_1_s@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_collect_1_s@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@2x.png b/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@2x.png new file mode 100644 index 0000000..18cfc41 --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@3x.png b/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@3x.png new file mode 100644 index 0000000..203b9d9 --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_good.imageset/Contents.json b/XQMuse/Assets.xcassets/Btns/btn_good.imageset/Contents.json new file mode 100644 index 0000000..d099fa1 --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_good.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "btn_good@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_good@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@2x.png b/XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@2x.png new file mode 100644 index 0000000..0734150 --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@3x.png b/XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@3x.png new file mode 100644 index 0000000..8293fca --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/Contents.json b/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/Contents.json new file mode 100644 index 0000000..f87fece --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "btn_like_u@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_like_u@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@2x.png b/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@2x.png new file mode 100644 index 0000000..27d127f --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@3x.png b/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@3x.png new file mode 100644 index 0000000..475a2a0 --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/Contents.json b/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/Contents.json new file mode 100644 index 0000000..cb2a5fa --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "btn_roll_loop@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_roll_loop@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@2x.png b/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@2x.png new file mode 100644 index 0000000..ef77008 --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@3x.png b/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@3x.png new file mode 100644 index 0000000..ca81b9f --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/Contents.json new file mode 100644 index 0000000..72d9c06 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_choose_small_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_choose_small_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@2x.png b/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@2x.png new file mode 100644 index 0000000..7b1fd7d --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@3x.png b/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@3x.png new file mode 100644 index 0000000..a0ecd35 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/Contents.json new file mode 100644 index 0000000..96402d0 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_choose_small_2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_choose_small_2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@2x.png b/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@2x.png new file mode 100644 index 0000000..fe3b7bb --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@3x.png b/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@3x.png new file mode 100644 index 0000000..2c0d644 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/Contents.json new file mode 100644 index 0000000..4fb2a4b --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_freee@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_freee@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@2x.png b/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@2x.png new file mode 100644 index 0000000..07c40c6 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@3x.png b/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@3x.png new file mode 100644 index 0000000..297f4e6 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/Contents.json new file mode 100644 index 0000000..1f1815e --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_success_full@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_success_full@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@2x.png b/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@2x.png new file mode 100644 index 0000000..73d3fb6 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@3x.png b/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@3x.png new file mode 100644 index 0000000..ce93b77 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/Contents.json new file mode 100644 index 0000000..cba6d91 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_wallet@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_wallet@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@2x.png b/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@2x.png new file mode 100644 index 0000000..b08afcc --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@3x.png b/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@3x.png new file mode 100644 index 0000000..9f02fd9 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/Contents.json b/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/Contents.json new file mode 100644 index 0000000..bb7f43e --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "bg_vip@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "bg_vip@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@2x.png b/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@2x.png new file mode 100644 index 0000000..d6c5368 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@3x.png b/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@3x.png new file mode 100644 index 0000000..0cb99e6 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/Contents.json b/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/Contents.json new file mode 100644 index 0000000..ef2da66 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "bg_vip_u@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "bg_vip_u@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@2x.png b/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@2x.png new file mode 100644 index 0000000..ad9809a --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@3x.png b/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@3x.png new file mode 100644 index 0000000..975bec3 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@3x.png Binary files differ diff --git a/XQMuse/Config/HoverHeaderFlowLayout.swift b/XQMuse/Config/HoverHeaderFlowLayout.swift new file mode 100644 index 0000000..86843a1 --- /dev/null +++ b/XQMuse/Config/HoverHeaderFlowLayout.swift @@ -0,0 +1,99 @@ +// +// HoverHeaderFlowLayout.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import Foundation +import UIKit +import JQTools + +/// 悬浮HeaderView +class HoverHeaderFlowLayout:UICollectionViewFlowLayout{ + var naviHeight:CGFloat = JQ_NavBarHeight//默认分组停放高度 + override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + //UICollectionViewLayoutAttributes:我称它为collectionView中的item(包括cell和header、footer这些)的结构信息 + //截取到父类所返回的数组(里面放的是当前屏幕所能展示的item的结构信息),并转化成不可变数组 + var superArray = super.layoutAttributesForElements(in: rect) + //创建存索引的数组,无符号(正整数),无序(不能通过下标取值),不可重复(重复的话会自动过滤) + let noneHeaderSections=NSMutableIndexSet(); + for attributes:UICollectionViewLayoutAttributes in superArray! { + //如果当前的元素分类是一个cell,将cell所在的分区section加入数组,重复的话会自动过滤 + if attributes.representedElementCategory == .cell{ + noneHeaderSections.add(attributes.indexPath.section) + } + } + //遍历superArray,将当前屏幕中拥有的header的section从数组中移除,得到一个当前屏幕中没有header的section数组 + //正常情况下,随着手指往上移,header脱离屏幕会被系统回收而cell尚在,也会触发该方法 + for attributes:UICollectionViewLayoutAttributes in superArray! { + //如果当前的元素是一个header,将header所在的section从数组中移除 + if attributes.representedElementKind == UICollectionView.elementKindSectionHeader { + noneHeaderSections.remove(attributes.indexPath.section) + } + } + //遍历当前屏幕中没有header的section数组 + noneHeaderSections .enumerate({ (idx, obj) -> Void in + //取到当前section中第一个item的indexPath + let indexPath = NSIndexPath(item: 0, section: idx) + let attributes=self.layoutAttributesForSupplementaryView(ofKind: UICollectionView.elementKindSectionHeader, at: indexPath as IndexPath) + //如果当前分区确实有因为离开屏幕而被系统回收的header + if attributes != nil { + //将该header结构信息重新加入到superArray中去 + superArray?.append(attributes!) + } + }) + //遍历superArray,改变header结构信息中的参数,使它可以在当前section还没完全离开屏幕的时候一直显示 + for attributes:UICollectionViewLayoutAttributes in superArray! { + //如果当前item是header + if attributes.representedElementKind == UICollectionView.elementKindSectionHeader { + //得到当前header所在分区的cell的数量 + let numberOfItemsInSection=self.collectionView!.numberOfItems(inSection: attributes.indexPath.section) + //取到当前section中第一个item的indexPath + let firstItemIndexPath = NSIndexPath(item: 0, section: attributes.indexPath.section) + //得到最后一个item的indexPath + let lastItemIndexPath = NSIndexPath(item: max(0, numberOfItemsInSection-1), section: attributes.indexPath.section) + //得到第一个item和最后一个item的结构信息 + var firstItemAttributes, lastItemAttributes:UICollectionViewLayoutAttributes + if numberOfItemsInSection>0 { + //cell有值,则获取第一个cell和最后一个cell的结构信息 + firstItemAttributes=self.layoutAttributesForItem(at: firstItemIndexPath as IndexPath)! + lastItemAttributes=self.layoutAttributesForItem(at: lastItemIndexPath as IndexPath)! + }else{ + //cell没值,就新建一个UICollectionViewLayoutAttributes + firstItemAttributes=UICollectionViewLayoutAttributes() + //然后模拟出在当前分区中的唯一一个cell,cell在header的下面,高度为0,还与header隔着可能存在的sectionInset的top + let y=attributes.frame.maxY + sectionInset.top + firstItemAttributes.frame=CGRect(x: 0, y: y, width: 0, height: 0) + //因为只有一个cell,所以最后一个cell等于第一个cell + lastItemAttributes=firstItemAttributes; + } + //获取当前header的frame + var rect=attributes.frame; + //当前的滑动距离 + 因为导航栏产生的偏移量,默认为0(如果app需求不同,需自己设置) + let offset=(self.collectionView?.contentOffset.y)! + naviHeight + //第一个cell的y值 - 当前header的高度 - 可能存在的sectionInset的top + let headerY=firstItemAttributes.frame.origin.y-rect.size.height-sectionInset.top + //哪个大取哪个,保证header悬停 + //针对当前header基本上都是offset更加大,针对下一个header则会是headerY大,各自处理 + let maxY=max(offset, headerY) + //最后一个cell的y值 + 最后一个cell的高度 + 可能存在的sectionInset的bottom - 当前header的高度 + //当当前section的footer或者下一个section的header接触到当前header的底部,计算出的headerMissingY即为有效值 + let headerMissingY = lastItemAttributes.frame.maxY + sectionInset.bottom - rect.size.height; + //给rect的y赋新值,因为在最后消失的临界点要跟谁消失,所以取小 + rect.origin.y=min(maxY, headerMissingY) + //给header的结构信息的frame重新赋值 + attributes.frame=rect + //如果按照正常情况下,header离开屏幕被系统回收,而header的层次关系又与cell相等,如果不去理会,会出现cell在header上面的情况 + //通过打印可以知道cell的层次关系zIndex数值为0,我们可以将header的zIndex设置成1,如果不放心,也可以将它设置成非常大,这里随便填了个7 + attributes.zIndex=7 + + } + } + return superArray + } + //return true;表示一旦滑动就实时调用上面这个layoutAttributesForElementsInRect:方法 + override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool { + return true + } +} diff --git a/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift b/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift new file mode 100644 index 0000000..1595704 --- /dev/null +++ b/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift @@ -0,0 +1,17 @@ +// +// CourseOfficalCommendTopCCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit + +class CourseOfficalCommendTopCCell: UICollectionViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib b/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib new file mode 100644 index 0000000..7da392c --- /dev/null +++ b/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib @@ -0,0 +1,25 @@ +<?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"/> + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="_CourseOfficalCommendTopCCell" id="gTV-IL-0wX" customClass="CourseOfficalCommendTopCCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="328" height="269"/> + <autoresizingMask key="autoresizingMask"/> + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> + <rect key="frame" x="0.0" y="0.0" width="328" height="269"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + </view> + <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> + <size key="customSize" width="328" height="269"/> + <point key="canvasLocation" x="293.12977099236639" y="97.535211267605632"/> + </collectionViewCell> + </objects> +</document> diff --git a/XQMuse/Root/Course/CourseVC.swift b/XQMuse/Root/Course/CourseVC.swift index 5281bff..21f7221 100644 --- a/XQMuse/Root/Course/CourseVC.swift +++ b/XQMuse/Root/Course/CourseVC.swift @@ -6,24 +6,149 @@ // import UIKit +import SPPageMenu +import JQTools +import FFPage class CourseVC: BaseVC { + + private(set) var pageMenu:SPPageMenu = { + let pageMenu = SPPageMenu(frame: .zero, trackerStyle: .line) + // 追踪线 + pageMenu.trackerWidth = 27.5 + pageMenu.setTrackerHeight(11, cornerRadius:0) + pageMenu.trackerFollowingMode = .always + pageMenu.contentInset = UIEdgeInsets(top: 0, left: 19.5, bottom: 15, right: 19.5) + pageMenu.setItems(["官方推荐","导师专栏"], selectedItemIndex: 0) + pageMenu.backgroundColor = UIColor(hexString: "#F0F0F0") + pageMenu.tracker.image = UIImage(named: "icon_unline") + pageMenu.tracker.backgroundColor = .clear + + // 分割线 + pageMenu.dividingLine.backgroundColor = .clear + pageMenu.dividingLineHeight = 1 + + // item + pageMenu.spacing = 27.0 + pageMenu.permutationWay = .scrollAdaptContent + + // 字体 + pageMenu.selectedItemTitleFont = Def_SourceHanSansCN_Regular(fontSize: 21) + pageMenu.unSelectedItemTitleFont = Def_SourceHanSansCN_Regular(fontSize: 16) + // 颜色 + pageMenu.selectedItemTitleColor = UIColor(hexStr: "#252A23") + pageMenu.unSelectedItemTitleColor = UIColor(hexStr: "#A1A1A1") + return pageMenu + }() + + lazy var pageViewController:FFPageViewController = { + let pageVC = FFPageViewController() + pageVC.view.backgroundColor = .clear + pageVC.scrollview.backgroundColor = .clear + + pageVC.scrollview.bounces = false + return pageVC + }() override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view. } + override func setUI() { + super.setUI() + let titleView = UIView() + titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 40) + let titleL = UILabel() + titleL.font = Def_SourceHanSansCN_Regular(fontSize: 21) + titleL.text = "心泉课程" + titleL.textAlignment = .center + titleL.textColor = UIColor(hexStr: "#252A23") + titleL.frame = CGRect(x: 0, y: 0, width: 100, height: 19) - /* - // MARK: - Navigation + let subTitleL = UILabel() + subTitleL.font = Def_Agenda_Light(fontSize: 8) + subTitleL.text = "XIN QUAN" + subTitleL.textAlignment = .center + subTitleL.textColor = UIColor(hexStr: "#252A23") + subTitleL.frame = CGRect(x: 0, y: 20, width: 100, height: 19) - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - } - */ + titleView.addSubview(titleL) + titleView.addSubview(subTitleL) + navigationItem.titleView = titleView + + let search = UIButton(type: .custom) + search.setImage(UIImage(named: "btn_search"), for: .normal) + search.addTarget(self, action: #selector(searchAction), for: .touchUpInside) + search.bounds = CGRect(origin: .zero, size:CGSize(width: 50, height: 30)) + navigationItem.leftBarButtonItem = UIBarButtonItem(customView: search) + + + let voices = UIButton(type: .custom) + voices.setImage(UIImage(named: "btn_voices"), for: .normal) + voices.addTarget(self, action: #selector(settingvoiceAction), for: .touchUpInside) + voices.bounds = CGRect(origin: .zero, size:CGSize(width: 50, height: 30)) + navigationItem.rightBarButtonItem = UIBarButtonItem(customView: voices) + + pageMenu.delegate = self + + view.addSubview(pageMenu) + pageMenu.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.height.equalTo(73.5) + make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top) + } + view.addSubview(pageViewController.view) + pageViewController.view.backgroundColor = .clear + pageViewController.delegate = self + pageViewController.view.snp.makeConstraints { make in + make.top.equalTo(pageMenu.snp.bottom) + make.left.right.bottom.equalToSuperview() + } + + } + + + @objc func searchAction(){ + let vc = SearchVC() + push(vc: vc) + } + + @objc func settingvoiceAction(){ + let vc = BackgroundVoiceVC() + push(vc: vc) + } + +} + +extension CourseVC:SPPageMenuDelegate{ + func pageMenu(_ pageMenu: SPPageMenu, itemSelectedAt index: Int) { + pageViewController.scroll(toPage: index, animation: true) + } +} + + +extension CourseVC:FFPageViewControllerDelegate{ + + func pageViewController(_ pageViewController: FFPageViewController, currentPageChanged currentPage: Int) { + pageMenu.selectedItemIndex = currentPage + } + + func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt { + return 2 + } + + func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController { + + if page == 0{ + return CourseVCOfficalCommentVC() + } + + if page == 1{ + return CourseVCTeacherSpecialVC() + } + + return UIViewController() + } } diff --git a/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift b/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift new file mode 100644 index 0000000..7dec829 --- /dev/null +++ b/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift @@ -0,0 +1,102 @@ +// +// CourseVCOfficalCommentVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools + +class CourseVCOfficalCommentVC: BaseVC { + + private var collectionView:UICollectionView! + private var titleItems = [TitleItem]() + + override func viewDidLoad() { + super.viewDidLoad() + + titleItems.append(TitleItem(title: "新手冥想指南", subTitle: "Meditation guide")) + titleItems.append(TitleItem(title: "推荐课程", subTitle: "与内心的宁静与喜悦入睡")) + } + + override func setUI() { + super.setUI() + view.backgroundColor = UIColor(hexString: "#F0F0F0") + let layout = UICollectionViewFlowLayout() + collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.contentInset = UIEdgeInsets(top: 0, left: 19, bottom: 0, right: 19) + collectionView.register(UINib(nibName: "HomeRelaxBanner_2_CCell", bundle: nil), forCellWithReuseIdentifier: "_HomeRelaxBanner_2_CCell") + collectionView.register(UINib(nibName: "CourseOfficalCommendTopCCell", bundle: nil), forCellWithReuseIdentifier: "_CourseOfficalCommendTopCCell") + + collectionView.register(HomeHeaderView_1.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "header") + view.addSubview(collectionView) + collectionView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } +} + +extension CourseVCOfficalCommentVC:UICollectionViewDelegate & UICollectionViewDataSource{ + + + func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { + if kind == UICollectionView.elementKindSectionHeader{ + let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "header", for: indexPath) as! HomeHeaderView_1 + let m = titleItems[indexPath.section] + headerView.setTitle(m.title, subTitle: m.subTitle) + return headerView + } + return UICollectionReusableView() + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + + if indexPath.section == 0{ + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_CourseOfficalCommendTopCCell", for: indexPath) as! CourseOfficalCommendTopCCell + cell.backgroundColor = .jq_randomColor + return cell + } + + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_CCell", for: indexPath) as! HomeRelaxBanner_2_CCell + cell.backgroundColor = .jq_randomColor + return cell + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + if section == 0{ + return 1 + } + return 20 + } + + func numberOfSections(in collectionView: UICollectionView) -> Int { + return titleItems.count + } +} + +extension CourseVCOfficalCommentVC:UICollectionViewDelegateFlowLayout{ + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + if indexPath.section == 0{ + return CGSize(width: JQ_ScreenW, height: 421) + } + + let w = (JQ_ScreenW - 19 * 2 - 14) / 2 + + return CGSize(width: w, height: w * 1.314) + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 14 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 14 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { + return CGSize(width: JQ_ScreenW, height: 80.5) + } +} diff --git a/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift b/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift new file mode 100644 index 0000000..d258bb4 --- /dev/null +++ b/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift @@ -0,0 +1,30 @@ +// +// CourseVCTeacherSpecialVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools + +class CourseVCTeacherSpecialVC: BaseVC { + + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = .jq_randomColor + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift new file mode 100644 index 0000000..1ed8503 --- /dev/null +++ b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift @@ -0,0 +1,33 @@ +// +// HomeRelaxBanner_2_1_CCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools + +class HomeRelaxBanner_2_1_CCell: UICollectionViewCell { + + @IBOutlet weak var view_text_bg: UIView! + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + + + jq_cornerRadius = 10 + + let blurEffect = UIBlurEffect(style: .light) + let visualEffectView = UIVisualEffectView(effect: blurEffect) + view_text_bg.addSubview(visualEffectView) + visualEffectView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + visualEffectView.alpha = 0.7 + view_text_bg.sendSubviewToBack(visualEffectView) + visualEffectView.layer.masksToBounds = true + } + + +} diff --git a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib new file mode 100644 index 0000000..6ba81d1 --- /dev/null +++ b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib @@ -0,0 +1,99 @@ +<?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"/> + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="_HomeRelaxBanner_2_1_CCell" id="gTV-IL-0wX" customClass="HomeRelaxBanner_2_1_CCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="160" height="196"/> + <autoresizingMask key="autoresizingMask"/> + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> + <rect key="frame" x="0.0" y="0.0" width="160" height="196"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VwD-36-ent"> + <rect key="frame" x="0.0" y="0.0" width="160" height="196"/> + </imageView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nyj-tV-0t4"> + <rect key="frame" x="0.0" y="146" width="160" height="50"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6md-5M-Pce"> + <rect key="frame" x="20" y="5.9999999999999991" width="13" height="10.666666666666664"/> + <constraints> + <constraint firstAttribute="height" constant="10.57" id="b4q-6z-Gno"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="1000" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EeQ-hi-VEz"> + <rect key="frame" x="20" y="22" width="89" height="10.666666666666664"/> + <constraints> + <constraint firstAttribute="height" constant="10.57" id="ma3-Tn-T3O"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="8"/> + <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + <nil key="highlightedColor"/> + </label> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_use_small" translatesAutoresizingMaskIntoConstraints="NO" id="Y7f-aB-0R5"> + <rect key="frame" x="119" y="22" width="10" height="10.666666666666664"/> + <constraints> + <constraint firstAttribute="width" constant="10" id="3we-wk-eag"/> + <constraint firstAttribute="height" constant="10.5" id="T4v-eM-jjx"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wxc-EY-qwU"> + <rect key="frame" x="131" y="22.666666666666657" width="6" height="9.6666666666666643"/> + <fontDescription key="fontDescription" type="system" pointSize="8"/> + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <constraints> + <constraint firstAttribute="trailing" secondItem="Wxc-EY-qwU" secondAttribute="trailing" constant="23" id="1lo-tj-hSD"/> + <constraint firstItem="Y7f-aB-0R5" firstAttribute="leading" secondItem="EeQ-hi-VEz" secondAttribute="trailing" constant="10" id="6Ta-sO-wtF"/> + <constraint firstItem="Wxc-EY-qwU" firstAttribute="leading" secondItem="Y7f-aB-0R5" secondAttribute="trailing" constant="2" id="HlL-mC-Zj3"/> + <constraint firstItem="6md-5M-Pce" firstAttribute="top" secondItem="nyj-tV-0t4" secondAttribute="top" constant="6" id="KXL-JH-Ymd"/> + <constraint firstItem="Wxc-EY-qwU" firstAttribute="centerY" secondItem="EeQ-hi-VEz" secondAttribute="centerY" id="Pau-3T-hlR"/> + <constraint firstItem="Y7f-aB-0R5" firstAttribute="centerY" secondItem="EeQ-hi-VEz" secondAttribute="centerY" id="Te3-Aw-qID"/> + <constraint firstItem="EeQ-hi-VEz" firstAttribute="top" secondItem="6md-5M-Pce" secondAttribute="bottom" constant="5.5" id="TwN-Dx-nby"/> + <constraint firstItem="6md-5M-Pce" firstAttribute="leading" secondItem="nyj-tV-0t4" secondAttribute="leading" constant="20" id="UZ1-SQ-4vN"/> + <constraint firstItem="EeQ-hi-VEz" firstAttribute="leading" secondItem="6md-5M-Pce" secondAttribute="leading" id="qrg-fN-GGz"/> + <constraint firstAttribute="height" constant="50" id="tml-hU-Ojf"/> + </constraints> + </view> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_freee" translatesAutoresizingMaskIntoConstraints="NO" id="C5o-Fs-4Xu"> + <rect key="frame" x="11" y="9" width="50" height="18"/> + </imageView> + </subviews> + </view> + <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="nyj-tV-0t4" secondAttribute="bottom" id="6kR-m6-W7L"/> + <constraint firstItem="VwD-36-ent" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="6q4-UC-TbP"/> + <constraint firstItem="nyj-tV-0t4" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="HsY-aP-b2m"/> + <constraint firstItem="C5o-Fs-4Xu" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="11" id="LW9-j0-pdo"/> + <constraint firstItem="C5o-Fs-4Xu" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="9" id="M5Z-Od-Ixc"/> + <constraint firstAttribute="trailing" secondItem="VwD-36-ent" secondAttribute="trailing" id="eMF-Er-Mtm"/> + <constraint firstItem="VwD-36-ent" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="gba-Nk-kGk"/> + <constraint firstAttribute="trailing" secondItem="nyj-tV-0t4" secondAttribute="trailing" id="oZN-uZ-l0V"/> + <constraint firstAttribute="bottom" secondItem="VwD-36-ent" secondAttribute="bottom" id="p7n-UX-5N7"/> + </constraints> + <size key="customSize" width="160" height="196"/> + <connections> + <outlet property="view_text_bg" destination="nyj-tV-0t4" id="Lef-w5-fi6"/> + </connections> + <point key="canvasLocation" x="164.8854961832061" y="71.83098591549296"/> + </collectionViewCell> + </objects> + <resources> + <image name="icon_freee" width="50" height="18"/> + <image name="icon_use_small" width="10" height="10.666666984558105"/> + </resources> +</document> diff --git a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib index b12a6fd..93f37e0 100644 --- a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib +++ b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib @@ -69,10 +69,6 @@ </view> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_vip" translatesAutoresizingMaskIntoConstraints="NO" id="yBF-fO-fwz"> <rect key="frame" x="14.666666666666666" y="7.6666666666666661" width="21.333333333333336" height="21.333333333333336"/> - <constraints> - <constraint firstAttribute="width" constant="21.5" id="bKV-6r-xqd"/> - <constraint firstAttribute="height" constant="21.5" id="puY-wU-5SI"/> - </constraints> </imageView> </subviews> </view> diff --git a/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift b/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift new file mode 100644 index 0000000..9792db2 --- /dev/null +++ b/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift @@ -0,0 +1,20 @@ +// +// Home_Style_4_Inner_1_CCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools + +class Home_Style_4_Inner_1_CCell: UICollectionViewCell { + + @IBOutlet weak var view_shadow: UIView! + + override func awakeFromNib() { + super.awakeFromNib() + view_shadow.jq_gradientColor(colorArr: [UIColor.black.withAlphaComponent(0.2).cgColor,UIColor.clear.cgColor], cornerRadius: 0, startPoint: CGPoint(x: 1, y: 1), endPoint: CGPoint(x: 1, y: 0), bounds: nil, locations: nil) + } + +} diff --git a/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.xib b/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.xib new file mode 100644 index 0000000..47d5085 --- /dev/null +++ b/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.xib @@ -0,0 +1,91 @@ +<?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"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="_Home_Style_4_Inner_1_CCell" id="gTV-IL-0wX" customClass="Home_Style_4_Inner_1_CCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="413" height="265"/> + <autoresizingMask key="autoresizingMask"/> + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> + <rect key="frame" x="0.0" y="0.0" width="413" height="265"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="j7d-BF-xYH"> + <rect key="frame" x="0.0" y="255.66666666666666" width="413" height="9.333333333333286"/> + <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94117647059999998" alpha="0.45000000000000001" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="9.5" id="wsl-qN-1LP"/> + </constraints> + </view> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ajx-e3-nPT"> + <rect key="frame" x="0.0" y="0.0" width="413" height="255.66666666666666"/> + </imageView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="all-AA-1bU"> + <rect key="frame" x="0.0" y="155.66666666666666" width="413" height="100"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_pay_s" translatesAutoresizingMaskIntoConstraints="NO" id="blS-wb-4tS"> + <rect key="frame" x="24" y="58.000000000000007" width="14.666666666666664" height="18.333333333333336"/> + <constraints> + <constraint firstAttribute="height" constant="18.5" id="ENQ-ju-UWO"/> + <constraint firstAttribute="width" constant="14.5" id="cuz-Sz-rLa"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tDO-qY-aGP"> + <rect key="frame" x="43" y="53.333333333333343" width="42" height="20.333333333333329"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/> + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="can be switched on" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NTV-9E-3YX"> + <rect key="frame" x="43" y="77.666666666666686" width="94" height="12"/> + <fontDescription key="fontDescription" type="system" pointSize="10"/> + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="NTV-9E-3YX" firstAttribute="leading" secondItem="tDO-qY-aGP" secondAttribute="leading" id="51K-EF-Rvn"/> + <constraint firstItem="blS-wb-4tS" firstAttribute="leading" secondItem="all-AA-1bU" secondAttribute="leading" constant="24" id="Lqw-Rn-RNa"/> + <constraint firstItem="NTV-9E-3YX" firstAttribute="top" secondItem="tDO-qY-aGP" secondAttribute="bottom" constant="4" id="ZMe-Wi-gxX"/> + <constraint firstItem="blS-wb-4tS" firstAttribute="top" secondItem="tDO-qY-aGP" secondAttribute="top" constant="4.5" id="bis-tD-VTd"/> + <constraint firstAttribute="height" constant="100" id="j9f-27-wVi"/> + <constraint firstItem="tDO-qY-aGP" firstAttribute="leading" secondItem="blS-wb-4tS" secondAttribute="trailing" constant="4.5" id="mdv-eZ-D7N"/> + <constraint firstAttribute="bottom" secondItem="blS-wb-4tS" secondAttribute="bottom" constant="23.5" id="o7z-53-St0"/> + </constraints> + </view> + </subviews> + </view> + <constraints> + <constraint firstItem="j7d-BF-xYH" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="2GG-1b-kYs"/> + <constraint firstItem="ajx-e3-nPT" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="3RP-eN-eVJ"/> + <constraint firstAttribute="trailing" secondItem="j7d-BF-xYH" secondAttribute="trailing" id="8dC-va-Zn5"/> + <constraint firstItem="j7d-BF-xYH" firstAttribute="top" secondItem="ajx-e3-nPT" secondAttribute="bottom" id="AvF-8C-wci"/> + <constraint firstItem="all-AA-1bU" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="NnN-W9-Grf"/> + <constraint firstAttribute="trailing" secondItem="all-AA-1bU" secondAttribute="trailing" id="QUs-lC-uZ4"/> + <constraint firstItem="ajx-e3-nPT" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="pof-Re-QZd"/> + <constraint firstAttribute="bottom" secondItem="j7d-BF-xYH" secondAttribute="bottom" id="weD-8Z-X7c"/> + <constraint firstItem="j7d-BF-xYH" firstAttribute="top" secondItem="all-AA-1bU" secondAttribute="bottom" id="x5m-nj-8va"/> + <constraint firstAttribute="trailing" secondItem="ajx-e3-nPT" secondAttribute="trailing" id="yxG-4V-MPe"/> + </constraints> + <size key="customSize" width="413" height="265"/> + <connections> + <outlet property="view_shadow" destination="all-AA-1bU" id="JuG-YX-jmu"/> + </connections> + <point key="canvasLocation" x="416.03053435114504" y="96.126760563380287"/> + </collectionViewCell> + </objects> + <resources> + <image name="icon_pay_s" width="14.666666984558105" height="18.666666030883789"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Home/HomeVC.swift b/XQMuse/Root/Home/HomeVC.swift index 4843d1b..dfe8316 100644 --- a/XQMuse/Root/Home/HomeVC.swift +++ b/XQMuse/Root/Home/HomeVC.swift @@ -27,7 +27,7 @@ titleItems.append(TitleItem(title: "新手冥想指南", subTitle: "Meditation guide")) titleItems.append(TitleItem(title: "放松助眠", subTitle: "与内心的宁静与喜悦入睡",hasMore:true)) titleItems.append(TitleItem(title: "放松助眠", subTitle: "与内心的宁静与喜悦入睡",hasMore:true)) - + titleItems.append(TitleItem(title: "放松助眠", subTitle: "与内心的宁静与喜悦入睡",hasMore:true)) } override func setUI() { @@ -120,9 +120,29 @@ // present(nav, animated: true) } + @objc func jumpMoreAction(_ sender:UIButton){ + switch sender.tag { + case 201: + //跳转计划引导 + break + default: + let topTitle = titleItems[sender.tag - 200].title + let vc = HomeItemListVC(topTitle: topTitle, id: 0) + push(vc: vc) + } + } + } extension HomeVC:UITableViewDelegate & UITableViewDataSource{ + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + if indexPath.section == 2{ + let vc = HomeTyroGuideVC() + push(vc: vc) + } + } + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if indexPath.section == 0{ let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_1_TCell") as! Home_Style_1_TCell @@ -130,7 +150,8 @@ } if indexPath.section == 1{ - let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_2_TCell") as! Home_Style_2_TCell + let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell + cell.style = .style1 return cell } @@ -147,11 +168,13 @@ if indexPath.section == 4{ let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell + cell.style = .style2 return cell } if indexPath.section == 5{ let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell + cell.style = .style2 return cell } @@ -187,6 +210,8 @@ let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "_HomeHeaderView") as! HomeHeaderView headerView.setTitle(titleItems[section].title, subTitle: titleItems[section].subTitle) headerView.btn_more.isHidden = !titleItems[section].hasMore + headerView.btn_more.tag = section + 200 + headerView.btn_more.addTarget(self, action: #selector(jumpMoreAction(_:)), for: .touchUpInside) if section == 1{ headerView.btn_more.setImage(UIImage(named: "btn_more"), for: .normal) diff --git a/XQMuse/Root/Home/TCell/CommentUserInputContentTCell.swift b/XQMuse/Root/Home/TCell/CommentUserInputContentTCell.swift new file mode 100644 index 0000000..6eeff7f --- /dev/null +++ b/XQMuse/Root/Home/TCell/CommentUserInputContentTCell.swift @@ -0,0 +1,24 @@ +// +// CommentUserInputContentTCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit + +class CommentUserInputContentTCell: UITableViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + selectionStyle = .none + + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} diff --git a/XQMuse/Root/Home/TCell/CommentUserInputContentTCell.xib b/XQMuse/Root/Home/TCell/CommentUserInputContentTCell.xib new file mode 100644 index 0000000..ff0bb0b --- /dev/null +++ b/XQMuse/Root/Home/TCell/CommentUserInputContentTCell.xib @@ -0,0 +1,57 @@ +<?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"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="264" id="KGk-i7-Jjw" customClass="CommentUserInputContentTCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="455" height="264"/> + <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="455" height="264"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="JzV-uN-yIi"> + <rect key="frame" x="21.999999999999996" y="28.999999999999996" width="38.666666666666657" height="38.666666666666657"/> + <color key="backgroundColor" systemColor="secondarySystemBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="38.5" id="PhY-mQ-I2e"/> + <constraint firstAttribute="width" constant="38.5" id="z6u-Bo-dOZ"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="19.25"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d4h-Q7-y18"> + <rect key="frame" x="81" y="28" width="42" height="21"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <constraints> + <constraint firstItem="JzV-uN-yIi" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="22" id="HkZ-1d-3HB"/> + <constraint firstItem="JzV-uN-yIi" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="29" id="fxZ-lQ-vtI"/> + </constraints> + </tableViewCellContentView> + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> + <point key="canvasLocation" x="183.96946564885496" y="97.183098591549296"/> + </tableViewCell> + </objects> + <resources> + <systemColor name="secondarySystemBackgroundColor"> + <color red="0.94901960784313721" green="0.94901960784313721" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift b/XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift index f56ba46..5ed61e1 100644 --- a/XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift +++ b/XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift @@ -39,6 +39,18 @@ cell.contentView.backgroundColor = .jq_randomColor return cell } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + if indexPath.row == 0{ + let vc = PaymentOrderVC() + JQ_currentViewController().jq_push(vc: vc) + } + + if indexPath.row == 1{ + let vc = VIPCenterVC() + JQ_currentViewController().jq_push(vc: vc) + } + } } extension Home_Style_3_TCell:UICollectionViewDelegateFlowLayout{ diff --git a/XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift b/XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift index 7f2d85f..de52d04 100644 --- a/XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift +++ b/XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift @@ -8,8 +8,15 @@ import UIKit import JQTools +enum Home_Style_4_Style{ + case style1 + case style2 +} + class Home_Style_4_TCell: UITableViewCell { + var style:Home_Style_4_Style! + @IBOutlet weak var collectionView: UICollectionView! override func awakeFromNib() { @@ -17,20 +24,35 @@ collectionView.delegate = self collectionView.dataSource = self collectionView.isPagingEnabled = true + collectionView.register(UINib(nibName: "Home_Style_4_Inner_1_CCell", bundle: nil), forCellWithReuseIdentifier: "_Home_Style_4_Inner_1_CCell") collectionView.register(UINib(nibName: "Home_Style_4_Inner_CCell", bundle: nil), forCellWithReuseIdentifier: "_Home_Style_4_Inner_CCell") collectionView.showsHorizontalScrollIndicator = false } } extension Home_Style_4_TCell:UICollectionViewDelegate & UICollectionViewDataSource{ + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let detailVC = HomeItemDetailVC() + JQ_currentViewController().jq_push(vc: detailVC) + } + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return 8 + return 3 } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + if style == .style1{ + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Home_Style_4_Inner_1_CCell", for: indexPath) as! Home_Style_4_Inner_1_CCell + return cell + } - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Home_Style_4_Inner_CCell", for: indexPath) as! Home_Style_4_Inner_CCell - return cell + if style == .style2{ + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Home_Style_4_Inner_CCell", for: indexPath) as! Home_Style_4_Inner_CCell + return cell + } + + return UICollectionViewCell() } } @@ -43,6 +65,14 @@ } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - return CGSize(width: JQ_ScreenW, height: JQ_ScreenW * 0.734) + if style == .style2{ + return CGSize(width: JQ_ScreenW, height: JQ_ScreenW * 0.734) + } + + if style == .style1{ + return CGSize(width: JQ_ScreenW, height: JQ_ScreenW * 0.551) + } + + return .zero } } diff --git a/XQMuse/Root/Home/VC/CommentListVC.swift b/XQMuse/Root/Home/VC/CommentListVC.swift new file mode 100644 index 0000000..b929978 --- /dev/null +++ b/XQMuse/Root/Home/VC/CommentListVC.swift @@ -0,0 +1,139 @@ +// +// CommentListVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/14. +// + +import UIKit +import QMUIKit +import JQTools + +class CommentListVC: BaseVC { + + @IBOutlet weak var view_content: UIView! + @IBOutlet weak var tf_input: QMUITextField! + @IBOutlet weak var label_questionNum: UILabel! + @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var cons_height: NSLayoutConstraint! + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .clear + tf_input.tintColor = Def_ThemeColor + tableView.separatorStyle = .none + tableView.delegate = self + tableView.dataSource = self + if #available(iOS 15.0, *) { + tableView.sectionHeaderTopPadding = 0 + } + + cons_height.constant = JQ_ScreenH - 151 - JQ_NavBarHeight - UIDevice.jq_safeEdges.top - UIDevice.jq_safeEdges.bottom + tableView.register(CommentCommentHeaderView.self, forHeaderFooterViewReuseIdentifier: "_header") + tableView.register(CommentReplyTCell.self, forCellReuseIdentifier: "_CommentReplyTCell") + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + view_content.jq_cornerPart(byRoundingCorners: [.topLeft,.topRight], radii: 20) + } + + @IBAction func closeAction(_ sender: UIButton) { + self.dismiss(animated: true) + } + + @IBAction func sendAction(_ sender: UIButton) { + + } + + @objc func longPressAction(_ gesture:UITapGestureRecognizer){ + if gesture.state == .began { + // 当长按开始时,你可以获取到 cell 的信息 + if let headerView = gesture.view as? CommentCommentHeaderView { + let index = headerView.tag - 1000 + ChooseOptView.show(titles: ["举报提问","拉入黑名单"]) { _ in + + } + } + } + } +} + +extension CommentListVC:UITableViewDelegate & UITableViewDataSource{ + + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { + let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "_header") as! CommentCommentHeaderView + headerView.tag = section + 1000 + + if headerView.gestureRecognizers == nil{ + let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressAction)) + longPress.minimumPressDuration = 0.5 + headerView.addGestureRecognizer(longPress) + } + + return headerView + } + + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + return UITableView.automaticDimension + } + + func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { + return 0.001 + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return UITableView.automaticDimension + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "_CommentReplyTCell", for: indexPath) as? CommentReplyTCell + + cell?.setText(text: "助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。助力13亿女性及其家庭生命蜕变,幸福重生的伟大愿景。") + return cell! + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 1 + } + + func numberOfSections(in tableView: UITableView) -> Int { + return 2 + } +} + +class CommentReplyTCell:UITableViewCell{ + + private lazy var label_content:UILabel = { + let label = UILabel() + label.textColor = UIColor(hexString: "#383838") + label.numberOfLines = 0 + return label + + }() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: .default, reuseIdentifier: reuseIdentifier) + if !self.contentView.subviews.contains(label_content){ + self.selectionStyle = .none + self.contentView.addSubview(label_content) + label_content.snp.makeConstraints { make in + make.top.equalToSuperview().offset(5) + make.left.equalTo(72.5) + make.right.equalTo(-28.5) + make.height.greaterThanOrEqualTo(0) + make.bottom.equalToSuperview().offset(0).priority(800) + } + } + } + + func setText(text:String){ + label_content.attributedText = AttributedStringbuilder().add(string: "平台回复:", withFont: .systemFont(ofSize: 12.5, weight: .bold), withColor: UIColor(hexString: "#383838")!,lineSpace: 5) + .add(string: text, withFont: .systemFont(ofSize: 12.5), withColor: UIColor(hexString: "#383838")!,lineSpace: 5).mutableAttributedString + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/XQMuse/Root/Home/VC/CommentListVC.xib b/XQMuse/Root/Home/VC/CommentListVC.xib new file mode 100644 index 0000000..b9160c7 --- /dev/null +++ b/XQMuse/Root/Home/VC/CommentListVC.xib @@ -0,0 +1,165 @@ +<?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="CommentListVC" customModule="XQMuse" customModuleProvider="target"> + <connections> + <outlet property="cons_height" destination="Jt5-vL-Xy7" id="erW-Ls-spJ"/> + <outlet property="label_questionNum" destination="tJL-SB-mev" id="hHc-29-HND"/> + <outlet property="tableView" destination="3LK-mI-8Z0" id="B19-t5-s0l"/> + <outlet property="tf_input" destination="p6F-O6-dow" id="j8I-wI-R2G"/> + <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> + <outlet property="view_content" destination="0U5-hZ-s5i" id="uKy-gK-PdH"/> + </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="ZLl-N5-S08"> + <rect key="frame" x="0.0" y="729" width="393" height="123"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zMX-CZ-PZh"> + <rect key="frame" x="295.66666666666669" y="18.666666666666629" width="53" height="29"/> + <color key="backgroundColor" red="0.59999999999999998" green="0.71372549019607845" blue="0.51372549019607838" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="29" id="7zY-nc-cNb"/> + <constraint firstAttribute="width" constant="53" id="h5X-iG-2KS"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="12"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" title="发布"/> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="14.5"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="sendAction:" destination="-1" eventType="touchUpInside" id="nCB-YR-oTw"/> + </connections> + </button> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Stl-8O-SW3"> + <rect key="frame" x="48.999999999999986" y="18.666666666666629" width="232.66666666666663" height="29"/> + <subviews> + <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="留下你的精彩评论吧" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="p6F-O6-dow" customClass="QMUITextField"> + <rect key="frame" x="16" y="0.0" width="208.66666666666666" height="29"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/> + <textInputTraits key="textInputTraits"/> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> + <color key="value" red="0.76470588235294112" green="0.76470588235294112" blue="0.76470588235294112" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </textField> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="p6F-O6-dow" secondAttribute="trailing" constant="8" id="8TK-xK-ojU"/> + <constraint firstItem="p6F-O6-dow" firstAttribute="top" secondItem="Stl-8O-SW3" secondAttribute="top" id="Azz-Ud-JFW"/> + <constraint firstAttribute="bottom" secondItem="p6F-O6-dow" secondAttribute="bottom" id="Ozg-qC-Mq4"/> + <constraint firstAttribute="height" constant="29" id="azq-2q-uXC"/> + <constraint firstItem="p6F-O6-dow" firstAttribute="leading" secondItem="Stl-8O-SW3" secondAttribute="leading" constant="16" id="vwq-Ag-TCy"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="color" keyPath="ld_borderColorXIB"> + <color key="value" red="0.76470588240000004" green="0.76470588240000004" blue="0.76470588240000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="number" keyPath="ld_borderWidthXIB"> + <real key="value" value="0.5"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="14.5"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </view> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="zMX-CZ-PZh" firstAttribute="centerY" secondItem="Stl-8O-SW3" secondAttribute="centerY" id="7Js-Xb-w0K"/> + <constraint firstItem="zMX-CZ-PZh" firstAttribute="top" secondItem="ZLl-N5-S08" secondAttribute="top" constant="18.5" id="8hi-C8-9pO"/> + <constraint firstAttribute="bottomMargin" secondItem="zMX-CZ-PZh" secondAttribute="bottom" constant="33.5" id="GzM-Ua-Hc9"/> + <constraint firstAttribute="trailing" secondItem="zMX-CZ-PZh" secondAttribute="trailing" constant="44.5" id="JTi-St-uAF"/> + <constraint firstItem="Stl-8O-SW3" firstAttribute="leading" secondItem="ZLl-N5-S08" secondAttribute="leading" constant="49" id="O3g-0S-qi6"/> + <constraint firstItem="zMX-CZ-PZh" firstAttribute="leading" secondItem="Stl-8O-SW3" secondAttribute="trailing" constant="14" id="m88-K6-Hud"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0U5-hZ-s5i"> + <rect key="frame" x="0.0" y="329" width="393" height="400"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0条提问" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tJL-SB-mev"> + <rect key="frame" x="169.66666666666666" y="24" width="54" height="17"/> + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/> + <color key="textColor" red="0.2196078431372549" green="0.2196078431372549" blue="0.2196078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zsV-4W-6yf"> + <rect key="frame" x="22" y="62" width="349" height="0.6666666666666643"/> + <color key="backgroundColor" red="0.81568627450980391" green="0.81568627450980391" blue="0.81568627450980391" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="0.5" id="UcA-2w-8E0"/> + </constraints> + </view> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WBR-j8-RVW"> + <rect key="frame" x="343" y="17.666666666666686" width="30" height="30"/> + <constraints> + <constraint firstAttribute="width" constant="30" id="1oL-UI-u25"/> + <constraint firstAttribute="height" constant="30" id="9ok-sn-Uf8"/> + </constraints> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="btn_close_1"/> + <connections> + <action selector="closeAction:" destination="-1" eventType="touchUpInside" id="fk5-Mx-Y2A"/> + </connections> + </button> + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" separatorStyle="default" allowsSelection="NO" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" estimatedSectionHeaderHeight="-1" sectionFooterHeight="18" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="3LK-mI-8Z0"> + <rect key="frame" x="0.0" y="62.666666666666686" width="393" height="337.33333333333331"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <inset key="separatorInset" minX="15" minY="0.0" maxX="0.0" maxY="0.0"/> + </tableView> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="3LK-mI-8Z0" secondAttribute="bottom" id="8bF-fE-Qnl"/> + <constraint firstItem="zsV-4W-6yf" firstAttribute="leading" secondItem="0U5-hZ-s5i" secondAttribute="leading" constant="22" id="GYY-md-vcF"/> + <constraint firstAttribute="height" constant="400" id="Jt5-vL-Xy7"/> + <constraint firstItem="tJL-SB-mev" firstAttribute="top" secondItem="0U5-hZ-s5i" secondAttribute="top" constant="24" id="Pft-fr-Og2"/> + <constraint firstAttribute="trailing" secondItem="WBR-j8-RVW" secondAttribute="trailing" constant="20" id="QCa-fd-2CB"/> + <constraint firstItem="tJL-SB-mev" firstAttribute="centerX" secondItem="0U5-hZ-s5i" secondAttribute="centerX" id="U0k-kn-jV1"/> + <constraint firstAttribute="trailing" secondItem="3LK-mI-8Z0" secondAttribute="trailing" id="etj-p3-kS2"/> + <constraint firstAttribute="trailing" secondItem="zsV-4W-6yf" secondAttribute="trailing" constant="22" id="jVv-PN-k4y"/> + <constraint firstItem="WBR-j8-RVW" firstAttribute="centerY" secondItem="tJL-SB-mev" secondAttribute="centerY" id="jcE-5f-nbR"/> + <constraint firstItem="zsV-4W-6yf" firstAttribute="top" secondItem="tJL-SB-mev" secondAttribute="bottom" constant="21" id="p1i-1u-ria"/> + <constraint firstItem="3LK-mI-8Z0" firstAttribute="top" secondItem="zsV-4W-6yf" secondAttribute="bottom" id="q7m-mm-acC"/> + <constraint firstItem="3LK-mI-8Z0" firstAttribute="leading" secondItem="0U5-hZ-s5i" secondAttribute="leading" id="sXT-C6-oD6"/> + </constraints> + </view> + </subviews> + <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> + <constraints> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="ZLl-N5-S08" secondAttribute="trailing" id="D5k-zM-9Qm"/> + <constraint firstItem="ZLl-N5-S08" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="FVr-hV-lL4"/> + <constraint firstItem="0U5-hZ-s5i" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="MK9-At-Oza"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="0U5-hZ-s5i" secondAttribute="trailing" id="Wzp-bR-aRa"/> + <constraint firstAttribute="bottom" secondItem="ZLl-N5-S08" secondAttribute="bottom" id="ZT9-Iu-0bE"/> + <constraint firstItem="ZLl-N5-S08" firstAttribute="top" secondItem="0U5-hZ-s5i" secondAttribute="bottom" id="aUb-Le-fpf"/> + </constraints> + <point key="canvasLocation" x="82" y="21"/> + </view> + </objects> + <resources> + <image name="btn_close_1" width="12" height="12"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Home/VC/HomeItemDetailVC.swift b/XQMuse/Root/Home/VC/HomeItemDetailVC.swift index e5df84a..4a4d58d 100644 --- a/XQMuse/Root/Home/VC/HomeItemDetailVC.swift +++ b/XQMuse/Root/Home/VC/HomeItemDetailVC.swift @@ -23,6 +23,18 @@ title = "心泉·疗愈" } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + //如果从支付过来的,移除支付 + navigationController!.viewControllers.removeAll { vc in + if vc is PaymentOrderResultVC || vc is PaymentOrderVC{ + return true + } + return false + } + } + override func setUI() { let collect_bitem = UIBarButtonItem(image: UIImage(named: "btn_collect"), style: .plain, target: self, action: #selector(collectionAction)) @@ -59,7 +71,9 @@ } @IBAction func commentAction(_ sender: TapBtn) { - + let vc = CommentListVC() + vc.modalPresentationStyle = .custom + present(vc, animated: true) } @IBAction func beLikeAction(_ sender: UIButton) { diff --git a/XQMuse/Root/Home/VC/HomeItemDetailVC.xib b/XQMuse/Root/Home/VC/HomeItemDetailVC.xib index 3b46a91..14d6df3 100644 --- a/XQMuse/Root/Home/VC/HomeItemDetailVC.xib +++ b/XQMuse/Root/Home/VC/HomeItemDetailVC.xib @@ -116,7 +116,8 @@ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OBt-Rv-6FE"> <rect key="frame" x="350.33333333333331" y="55" width="21.666666666666686" height="22"/> <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> - <state key="normal" image="btn_like"/> + <state key="normal" image="btn_like_u"/> + <state key="selected" image="btn_like"/> <connections> <action selector="beLikeAction:" destination="-1" eventType="touchUpInside" id="yQs-VU-v7b"/> </connections> @@ -221,6 +222,7 @@ <resources> <image name="btn_comment" width="18.666666030883789" height="19"/> <image name="btn_like" width="21.666666030883789" height="17"/> + <image name="btn_like_u" width="21.666666030883789" height="17"/> <image name="btn_list" width="17" height="13.666666984558105"/> <image name="btn_roll" width="22.666666030883789" height="19.666666030883789"/> <image name="btn_time" width="20.666666030883789" height="20.666666030883789"/> diff --git a/XQMuse/Root/Home/VC/HomeTyroGuideVC.swift b/XQMuse/Root/Home/VC/HomeTyroGuideVC.swift new file mode 100644 index 0000000..dbaed65 --- /dev/null +++ b/XQMuse/Root/Home/VC/HomeTyroGuideVC.swift @@ -0,0 +1,37 @@ +// +// HomeTyroGuideVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit + +class HomeTyroGuideVC: BaseVC { + + var scrollView:UIScrollView! + var centerImage:UIImageView! + + override func viewDidLoad() { + super.viewDidLoad() + title = "心泉·疗愈" + } + + override func setUI() { + super.setUI() + scrollView = UIScrollView() + scrollView.showsVerticalScrollIndicator = false + view.addSubview(scrollView) + scrollView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + centerImage = UIImageView() + scrollView.addSubview(centerImage) + centerImage.snp.makeConstraints { make in + make.edges.equalToSuperview() + make.centerX.equalToSuperview() + make.height.equalTo(1200) + } + } +} diff --git a/XQMuse/Root/Home/VC/PaymentOrderResultVC.swift b/XQMuse/Root/Home/VC/PaymentOrderResultVC.swift new file mode 100644 index 0000000..a8abf8e --- /dev/null +++ b/XQMuse/Root/Home/VC/PaymentOrderResultVC.swift @@ -0,0 +1,140 @@ +// +// PaymentOrderResultVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools +class PaymentOrderResultVC: BaseVC { + + var collectionView:UICollectionView! + private let topView = PaymentOrderResultTopView.jq_loadNibView() +// private let shadowView = UIView() + + override func viewDidLoad() { + super.viewDidLoad() + title = "支付结果" + + } + + override func setUI() { + super.setUI() + view.backgroundColor = .white + + let layout = HoverHeaderFlowLayout() + let w = (JQ_ScreenW - 18 * 3) / 2 + layout.itemSize = CGSize(width: w, height: w * 1.319) + layout.headerReferenceSize = CGSize(width: JQ_ScreenW, height: 59) + collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.backgroundColor = .clear + collectionView.delegate = self + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .white + collectionView.contentInset = UIEdgeInsets(top: 298, left: 18, bottom: 0, right: 18) + collectionView.register(UINib(nibName: "HomeRelaxBanner_2_1_CCell", bundle: nil), forCellWithReuseIdentifier: "_HomeRelaxBanner_2_1_CCell") + collectionView.register(PaymentOrderResultHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "header") + view.addSubview(collectionView) + collectionView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + + view.addSubview(topView) + topView.backgroundColor = .clear + topView.snp.makeConstraints {[unowned self] make in + make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top).offset(0) + make.left.right.equalToSuperview() + make.height.equalTo(278) + } + +// view.addSubview(shadowView) +// shadowView.backgroundColor = .white +// shadowView.snp.makeConstraints {[unowned self] make in +// make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top).offset(0) +// make.left.right.equalToSuperview() +// make.height.equalTo(30) +// } + + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() +// shadowView.jq_gradientColor(colorArr: [UIColor(hexStr: "#F5F5F5").withAlphaComponent(0.15).cgColor,UIColor.clear.cgColor], cornerRadius: 0, startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 1), bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW, height: 30),locations: [0.1,0.9]) + } +} + +extension PaymentOrderResultVC:UIScrollViewDelegate{ + func scrollViewDidScroll(_ scrollView: UIScrollView) { + let v = (scrollView.contentOffset.y) + 298 + topView.y = -v + } +} + +extension PaymentOrderResultVC:UICollectionViewDelegate & UICollectionViewDataSource{ + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 50 + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { +// let vc = HomeItemDetailVC() +// push(vc: vc) + + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_1_CCell", for: indexPath) as! HomeRelaxBanner_2_1_CCell + cell.backgroundColor = .jq_randomColor + return cell + } + + func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { + if kind == UICollectionView.elementKindSectionHeader{ + let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "header", for: indexPath) as! PaymentOrderResultHeaderView + return headerView + } + + return UICollectionReusableView() + } +} + +class PaymentOrderResultHeaderView:UICollectionReusableView{ + + override init(frame: CGRect) { + super.init(frame: frame) + setUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setUI(){ + backgroundColor = .white + + let lineView = UIView() + lineView.backgroundColor = UIColor(hexString: "#979797")?.withAlphaComponent(0.26) + addSubview(lineView) + lineView.snp.makeConstraints { make in + make.left.equalTo(76) + make.right.equalTo(-76) + make.height.equalTo(1) + make.centerY.equalToSuperview() + } + + let lineLabel = UILabel() + lineLabel.text = "猜你喜欢" + lineLabel.backgroundColor = .white + lineLabel.textAlignment = .center + lineLabel.font = .systemFont(ofSize: 14, weight: .medium) + lineLabel.textColor = UIColor(hexString: "#3F4343")?.withAlphaComponent(0.79) + addSubview(lineLabel) + lineLabel.snp.makeConstraints { make in + make.center.equalToSuperview() + make.width.equalTo(71) + make.height.equalTo(20) + } + } +} diff --git a/XQMuse/Root/Home/VC/PaymentOrderResultVC.xib b/XQMuse/Root/Home/VC/PaymentOrderResultVC.xib new file mode 100644 index 0000000..fba5c60 --- /dev/null +++ b/XQMuse/Root/Home/VC/PaymentOrderResultVC.xib @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <dependencies> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/> + <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" customClass="PaymentOrderResultVC" 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="375" height="667"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> + <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> + </view> + </objects> +</document> diff --git a/XQMuse/Root/Home/VC/PaymentOrderVC.swift b/XQMuse/Root/Home/VC/PaymentOrderVC.swift new file mode 100644 index 0000000..14e6be9 --- /dev/null +++ b/XQMuse/Root/Home/VC/PaymentOrderVC.swift @@ -0,0 +1,49 @@ +// +// PaymentOrderVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import QMUIKit + +class PaymentOrderVC: BaseVC { + + @IBOutlet weak var tf_phone: QMUITextField! + @IBOutlet weak var label_walletBalance: UILabel! + @IBOutlet weak var btn_isreadAgreement: UIButton! + + override func viewDidLoad() { + super.viewDidLoad() + title = "确认订单" + + } + + override func setUI() { + super.setUI() + + } + + @IBAction func invateRegisterAction(_ sender: UIButton) { + + } + + @IBAction func searchUserAction(_ sender: UIButton) { + + } + + @IBAction func readAgreementAction(_ sender: UIButton) { + sender.isSelected = !sender.isSelected + } + + + @IBAction func webAgreementAction(_ sender: UIButton) { + + } + + @IBAction func completeAction(_ sender: UIButton) { + let vc = PaymentOrderResultVC() + push(vc: vc) + } +} diff --git a/XQMuse/Root/Home/VC/PaymentOrderVC.xib b/XQMuse/Root/Home/VC/PaymentOrderVC.xib new file mode 100644 index 0000000..129fdf5 --- /dev/null +++ b/XQMuse/Root/Home/VC/PaymentOrderVC.xib @@ -0,0 +1,487 @@ +<?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="PaymentOrderVC" customModule="XQMuse" customModuleProvider="target"> + <connections> + <outlet property="btn_isreadAgreement" destination="9jh-cC-nHB" id="kmT-qh-HGA"/> + <outlet property="label_walletBalance" destination="W3z-Hl-09j" id="CNw-KV-Uyh"/> + <outlet property="tf_phone" destination="W3K-U0-zHA" id="IkD-kf-fwY"/> + <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> + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jDI-6t-fTs"> + <rect key="frame" x="0.0" y="59" width="393" height="759"/> + <subviews> + <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="16" translatesAutoresizingMaskIntoConstraints="NO" id="3me-1I-5oC"> + <rect key="frame" x="8" y="14" width="377" height="404.33333333333331"/> + <subviews> + <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="H4R-h3-5Ua"> + <rect key="frame" x="0.0" y="0.0" width="377" height="331.33333333333331"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8V3-V7-K06"> + <rect key="frame" x="0.0" y="0.0" width="377" height="184"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="LBY-Q2-RQA"> + <rect key="frame" x="13.666666666666664" y="16" width="87.333333333333343" height="85"/> + <color key="backgroundColor" systemColor="separatorColor"/> + <constraints> + <constraint firstAttribute="width" constant="87.400000000000006" id="aed-zb-a4A"/> + <constraint firstAttribute="height" constant="84.900000000000006" id="ggl-aL-eV6"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="10"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GMw-pK-u8J"> + <rect key="frame" x="120.33333333333334" y="24.666666666666671" width="14.666666666666657" height="19.333333333333329"/> + <fontDescription key="fontDescription" type="system" pointSize="16"/> + <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"> + <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"/> + <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="y7d-Qe-XsO"> + <rect key="frame" x="120.33333333333333" y="78" width="39.333333333333329" height="14.333333333333329"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/> + <color key="textColor" red="0.47058823529411764" green="0.47058823529411764" blue="0.47058823529411764" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="x1" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hW7-II-bKY"> + <rect key="frame" x="346.66666666666669" y="78" width="14" height="14.333333333333329"/> + <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="12"/> + <color key="textColor" red="0.54117647059999996" green="0.68235294120000001" blue="0.39607843139999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gF5-hA-riS"> + <rect key="frame" x="13" y="123" width="351" height="0.3333333333333286"/> + <color key="backgroundColor" red="0.81568627450980391" green="0.81568627450980391" blue="0.81568627450980391" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="0.5" id="owu-BJ-bUd"/> + </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="g8H-Sg-oWt"> + <rect key="frame" x="15.000000000000004" y="123.33333333333336" width="57.333333333333343" height="60.666666666666671"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> + <color key="textColor" red="0.15686274509803921" green="0.15686274509803921" blue="0.15686274509803921" alpha="1" 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="s0D-hY-lov"> + <rect key="frame" x="318.66666666666669" y="146.66666666666666" width="47" height="14.333333333333343"/> + <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="12"/> + <color key="textColor" red="0.15686274509803921" green="0.15686274509803921" blue="0.15686274509803921" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="iyN-A8-Fyo" secondAttribute="trailing" constant="14" id="1Ab-m9-kit"/> + <constraint firstItem="iyN-A8-Fyo" firstAttribute="top" secondItem="8V3-V7-K06" secondAttribute="top" constant="27.5" id="1jT-vp-k8O"/> + <constraint firstItem="g8H-Sg-oWt" firstAttribute="leading" secondItem="8V3-V7-K06" secondAttribute="leading" constant="15" id="66U-aa-BBJ"/> + <constraint firstAttribute="trailing" secondItem="s0D-hY-lov" secondAttribute="trailing" constant="11.5" id="AMo-y5-7xA"/> + <constraint firstItem="gF5-hA-riS" firstAttribute="leading" secondItem="8V3-V7-K06" secondAttribute="leading" constant="13" id="CKv-M9-zoV"/> + <constraint firstItem="LBY-Q2-RQA" firstAttribute="leading" secondItem="8V3-V7-K06" secondAttribute="leading" constant="13.5" id="EII-gU-Axu"/> + <constraint firstItem="GMw-pK-u8J" firstAttribute="top" secondItem="LBY-Q2-RQA" secondAttribute="top" constant="8.5" id="GT6-MO-JEf"/> + <constraint firstItem="gF5-hA-riS" firstAttribute="top" secondItem="LBY-Q2-RQA" secondAttribute="bottom" constant="22" id="MNO-Oi-6hN"/> + <constraint firstItem="y7d-Qe-XsO" firstAttribute="bottom" secondItem="LBY-Q2-RQA" secondAttribute="bottom" constant="-8.5" id="P9l-wb-EZU"/> + <constraint firstItem="s0D-hY-lov" firstAttribute="centerY" secondItem="g8H-Sg-oWt" secondAttribute="centerY" id="Seu-ey-YgT"/> + <constraint firstAttribute="height" constant="184" id="Wwm-Xp-ZAb"/> + <constraint firstAttribute="trailing" secondItem="gF5-hA-riS" secondAttribute="trailing" constant="13" id="X1m-vX-ke1"/> + <constraint firstItem="iyN-A8-Fyo" firstAttribute="leading" secondItem="GMw-pK-u8J" secondAttribute="trailing" constant="10" id="avh-A8-gij"/> + <constraint firstItem="LBY-Q2-RQA" firstAttribute="top" secondItem="8V3-V7-K06" secondAttribute="top" constant="16" id="cdP-YT-xpZ"/> + <constraint firstAttribute="bottom" secondItem="g8H-Sg-oWt" secondAttribute="bottom" id="eRY-pS-OfM"/> + <constraint firstItem="g8H-Sg-oWt" firstAttribute="top" secondItem="gF5-hA-riS" secondAttribute="bottom" id="oPQ-76-UJG"/> + <constraint firstItem="hW7-II-bKY" firstAttribute="centerY" secondItem="y7d-Qe-XsO" secondAttribute="centerY" id="ofA-gH-hqR"/> + <constraint firstItem="GMw-pK-u8J" firstAttribute="leading" secondItem="LBY-Q2-RQA" secondAttribute="trailing" constant="19.5" id="svq-SW-m5m"/> + <constraint firstAttribute="trailing" secondItem="hW7-II-bKY" secondAttribute="trailing" constant="16.5" id="xEi-a8-oiB"/> + <constraint firstItem="y7d-Qe-XsO" firstAttribute="leading" secondItem="GMw-pK-u8J" secondAttribute="leading" id="ydi-ue-GMN"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4AR-Ov-N15"> + <rect key="frame" x="0.0" y="184" width="377" height="73"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qe7-dR-bUh"> + <rect key="frame" x="13" y="0.0" width="351" height="0.66666666666666663"/> + <color key="backgroundColor" red="0.81568627449999997" green="0.81568627449999997" blue="0.81568627449999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="0.5" id="SWq-R5-MlN"/> + </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="C5w-jL-Klr"> + <rect key="frame" x="15.000000000000004" y="32.666666666666686" width="57.333333333333343" height="13.333333333333336"/> + <constraints> + <constraint firstAttribute="height" constant="13.5" id="vK6-2b-dMV"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> + <color key="textColor" red="0.15686274510000001" green="0.15686274510000001" blue="0.15686274510000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6I2-HS-Bee"> + <rect key="frame" x="98.333333333333343" y="20.666666666666689" width="264.66666666666663" height="37.333333333333343"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4Lf-NY-aGs"> + <rect key="frame" x="186.33333333333337" y="3.6666666666666288" width="62" height="30"/> + <fontDescription key="fontDescription" type="system" weight="semibold" 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.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + <connections> + <action selector="searchUserAction:" destination="-1" eventType="touchUpInside" id="tB2-lO-CI9"/> + </connections> + </button> + <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入好友手机号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="W3K-U0-zHA" customClass="QMUITextField"> + <rect key="frame" x="22.000000000000014" y="0.0" width="142.33333333333337" height="37.333333333333336"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> + <textInputTraits key="textInputTraits" keyboardType="numberPad"/> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength"> + <integer key="value" value="11"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </textField> + </subviews> + <color key="backgroundColor" red="0.96470588235294119" green="0.96470588235294119" blue="0.96470588235294119" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="W3K-U0-zHA" secondAttribute="bottom" id="4oG-31-jMv"/> + <constraint firstAttribute="trailing" secondItem="4Lf-NY-aGs" secondAttribute="trailing" constant="16.5" id="Hb7-iV-iFK"/> + <constraint firstAttribute="height" constant="37.5" id="Ys9-7K-SeD"/> + <constraint firstItem="4Lf-NY-aGs" firstAttribute="centerY" secondItem="6I2-HS-Bee" secondAttribute="centerY" id="hSe-2O-7A4"/> + <constraint firstItem="W3K-U0-zHA" firstAttribute="top" secondItem="6I2-HS-Bee" secondAttribute="top" id="lQJ-xY-LjC"/> + <constraint firstItem="W3K-U0-zHA" firstAttribute="leading" secondItem="6I2-HS-Bee" secondAttribute="leading" constant="22" id="lVm-OD-nze"/> + <constraint firstItem="4Lf-NY-aGs" firstAttribute="leading" secondItem="W3K-U0-zHA" secondAttribute="trailing" constant="22" id="xuH-bp-wvT"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="18.75"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </view> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="qe7-dR-bUh" firstAttribute="leading" secondItem="4AR-Ov-N15" secondAttribute="leading" constant="13" id="2dB-G5-Dxy"/> + <constraint firstItem="qe7-dR-bUh" firstAttribute="top" secondItem="4AR-Ov-N15" secondAttribute="top" id="2i8-9X-Nhk"/> + <constraint firstAttribute="trailing" secondItem="6I2-HS-Bee" secondAttribute="trailing" constant="14" id="9GI-su-N8M"/> + <constraint firstAttribute="bottom" secondItem="C5w-jL-Klr" secondAttribute="bottom" constant="27" id="Bsq-R5-IOM"/> + <constraint firstItem="C5w-jL-Klr" firstAttribute="leading" secondItem="4AR-Ov-N15" secondAttribute="leading" constant="15" id="QOx-K7-9Cf"/> + <constraint firstItem="6I2-HS-Bee" firstAttribute="centerY" secondItem="C5w-jL-Klr" secondAttribute="centerY" id="lhx-yv-LxK"/> + <constraint firstAttribute="trailing" secondItem="qe7-dR-bUh" secondAttribute="trailing" constant="13" id="rls-z3-x6a"/> + <constraint firstItem="6I2-HS-Bee" firstAttribute="leading" secondItem="C5w-jL-Klr" secondAttribute="trailing" constant="26" id="t1P-Q5-jyI"/> + <constraint firstItem="C5w-jL-Klr" firstAttribute="top" secondItem="qe7-dR-bUh" secondAttribute="bottom" constant="32" id="y2d-Wc-wJy"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nDP-lX-aFn"> + <rect key="frame" x="0.0" y="257" width="377" height="74.333333333333314"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="TT7-tl-th0"> + <rect key="frame" x="13.666666666666671" y="0.0" width="53" height="53"/> + <color key="backgroundColor" red="0.81568627449999997" green="0.81568627449999997" blue="0.81568627449999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="53.100000000000001" id="H0U-WM-5Rh"/> + <constraint firstAttribute="width" constant="53.100000000000001" id="vFe-hz-ysZ"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="26.550000000000001"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hrJ-kN-vso"> + <rect key="frame" x="75" y="12.666666666666686" width="14" height="14.333333333333336"/> + <constraints> + <constraint firstAttribute="height" constant="14.5" id="6vP-7r-hz3"/> + </constraints> + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="15"/> + <color key="textColor" red="0.082352941176470587" green="0.15294117647058825" blue="0.082352941176470587" 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="ZF1-aZ-gRo"> + <rect key="frame" x="75" y="37.666666666666686" width="39.666666666666657" height="14.333333333333336"/> + <fontDescription key="fontDescription" type="system" pointSize="12"/> + <color key="textColor" red="0.46666666666666667" green="0.46666666666666667" blue="0.46666666666666667" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jVb-Rt-nvY"> + <rect key="frame" x="102.66666666666667" y="0.0" width="171.66666666666663" height="40.333333333333336"/> + <attributedString key="attributedText"> + <fragment content="未查询到账户信息"> + <attributes> + <color key="NSColor" red="0.46666666666666667" green="0.46666666666666667" blue="0.46666666666666667" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <font key="NSFont" metaFont="cellTitle"/> + <font key="NSOriginalFont" metaFont="cellTitle"/> + <paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineHeightMultiple="1.3999999999999999" tighteningFactorForTruncation="0.0"> + <lineBreakStrategy key="lineBreakStrategy" pushOut="YES" hangulWordPriority="YES" standard="YES"/> + </paragraphStyle> + </attributes> + </fragment> + <fragment> + <string key="content" base64-UTF8="YES"> +Cg +</string> + <attributes> + <color key="NSColor" red="0.46666666666666667" green="0.46666666666666667" blue="0.46666666666666667" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <font key="NSFont" metaFont="cellTitle"/> + <paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineHeightMultiple="1.3999999999999999" tighteningFactorForTruncation="0.0"> + <lineBreakStrategy key="lineBreakStrategy" pushOut="YES" hangulWordPriority="YES" standard="YES"/> + </paragraphStyle> + </attributes> + </fragment> + <fragment content="可分享二维码至好友,邀请注册"> + <attributes> + <color key="NSColor" red="0.46666666666666667" green="0.46666666666666667" blue="0.46666666666666667" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <font key="NSFont" metaFont="cellTitle"/> + <font key="NSOriginalFont" metaFont="cellTitle"/> + <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/> + </attributes> + </fragment> + </attributedString> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3oo-WM-iPM"> + <rect key="frame" x="304.66666666666669" y="48.666666666666686" width="57" height="11.666666666666664"/> + <constraints> + <constraint firstAttribute="height" constant="11.5" id="VZq-Ht-vK3"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="12"/> + <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.12941176470588234" green="0.74117647058823533" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + <connections> + <action selector="invateRegisterAction:" destination="-1" eventType="touchUpInside" id="aG5-GB-JKi"/> + </connections> + </button> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="jVb-Rt-nvY" firstAttribute="top" secondItem="nDP-lX-aFn" secondAttribute="top" id="8Zk-eE-Igp"/> + <constraint firstItem="TT7-tl-th0" firstAttribute="leading" secondItem="nDP-lX-aFn" secondAttribute="leading" constant="13.5" id="AF2-I3-7dY"/> + <constraint firstItem="hrJ-kN-vso" firstAttribute="top" secondItem="TT7-tl-th0" secondAttribute="top" constant="12.5" id="Fyp-9m-tWi"/> + <constraint firstAttribute="height" constant="74.200000000000003" id="Qr5-hA-Inm"/> + <constraint firstItem="TT7-tl-th0" firstAttribute="top" secondItem="nDP-lX-aFn" secondAttribute="top" id="aAo-RJ-pRa"/> + <constraint firstItem="hrJ-kN-vso" firstAttribute="leading" secondItem="TT7-tl-th0" secondAttribute="trailing" constant="8.5" id="caT-gK-t5S"/> + <constraint firstAttribute="trailing" secondItem="3oo-WM-iPM" secondAttribute="trailing" constant="15.5" id="cbc-z8-CEq"/> + <constraint firstItem="ZF1-aZ-gRo" firstAttribute="top" secondItem="hrJ-kN-vso" secondAttribute="bottom" constant="10.5" id="dC3-2u-PfV"/> + <constraint firstAttribute="bottom" secondItem="3oo-WM-iPM" secondAttribute="bottom" constant="14" id="fR1-dr-Rrz"/> + <constraint firstItem="ZF1-aZ-gRo" firstAttribute="leading" secondItem="hrJ-kN-vso" secondAttribute="leading" id="iWe-1d-lr3"/> + <constraint firstItem="jVb-Rt-nvY" firstAttribute="centerX" secondItem="nDP-lX-aFn" secondAttribute="centerX" id="zjC-zc-BNr"/> + </constraints> + </view> + </subviews> + </stackView> + <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="w7E-wj-goh"> + <rect key="frame" x="0.0" y="347.33333333333331" width="377" height="57"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dXP-rs-EAP"> + <rect key="frame" x="0.0" y="0.0" width="377" height="57"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_wallet" translatesAutoresizingMaskIntoConstraints="NO" id="3oH-OO-NEc"> + <rect key="frame" x="13.000000000000002" y="17.666666666666686" width="21.666666666666671" height="21.666666666666671"/> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="余额抵扣" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TAm-8d-ISp"> + <rect key="frame" x="42.333333333333329" y="20" width="57.333333333333329" height="17"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> + <color key="textColor" red="0.15686274509803921" green="0.15686274509803921" blue="0.15686274509803921" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="当前可用 ¥0.00" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="W3z-Hl-09j"> + <rect key="frame" x="111" y="21.666666666666686" width="78.666666666666686" height="13.333333333333336"/> + <fontDescription key="fontDescription" type="system" pointSize="11"/> + <color key="textColor" red="0.55686274509803924" green="0.55686274509803924" blue="0.55686274509803924" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_choose_small_s" translatesAutoresizingMaskIntoConstraints="NO" id="XNw-nK-MjP"> + <rect key="frame" x="347.33333333333331" y="20.333333333333371" width="15.666666666666686" height="16"/> + </imageView> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="3oH-OO-NEc" firstAttribute="centerY" secondItem="dXP-rs-EAP" secondAttribute="centerY" id="5YR-Zx-2K1"/> + <constraint firstItem="TAm-8d-ISp" firstAttribute="centerY" secondItem="3oH-OO-NEc" secondAttribute="centerY" id="Fpk-D9-CpC"/> + <constraint firstItem="TAm-8d-ISp" firstAttribute="leading" secondItem="3oH-OO-NEc" secondAttribute="trailing" constant="7.5" id="Hj8-LR-gAd"/> + <constraint firstItem="3oH-OO-NEc" firstAttribute="leading" secondItem="dXP-rs-EAP" secondAttribute="leading" constant="13" id="ZA2-Ui-sAL"/> + <constraint firstAttribute="height" constant="57" id="eun-wF-OxK"/> + <constraint firstItem="XNw-nK-MjP" firstAttribute="centerY" secondItem="dXP-rs-EAP" secondAttribute="centerY" id="mYL-ud-OMf"/> + <constraint firstItem="W3z-Hl-09j" firstAttribute="leading" secondItem="TAm-8d-ISp" secondAttribute="trailing" constant="11.5" id="ncp-qs-Wq1"/> + <constraint firstAttribute="trailing" secondItem="XNw-nK-MjP" secondAttribute="trailing" constant="14" id="reU-yz-Jef"/> + <constraint firstItem="W3z-Hl-09j" firstAttribute="centerY" secondItem="3oH-OO-NEc" secondAttribute="centerY" id="rf6-DL-KBg"/> + </constraints> + </view> + </subviews> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="10"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </stackView> + </subviews> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="10"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </stackView> + </subviews> + <color key="backgroundColor" red="0.96470588235294119" green="0.96470588235294119" blue="0.96470588235294119" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstItem="3me-1I-5oC" firstAttribute="leading" secondItem="jDI-6t-fTs" secondAttribute="leading" constant="8" id="7QP-Wu-rmk"/> + <constraint firstItem="3me-1I-5oC" firstAttribute="top" secondItem="jDI-6t-fTs" secondAttribute="top" constant="14" id="8SM-fY-xg6"/> + <constraint firstItem="3me-1I-5oC" firstAttribute="centerX" secondItem="jDI-6t-fTs" secondAttribute="centerX" id="cLe-W7-it0"/> + <constraint firstAttribute="trailing" secondItem="3me-1I-5oC" secondAttribute="trailing" constant="8" id="tad-cX-Gms"/> + <constraint firstAttribute="bottom" secondItem="3me-1I-5oC" secondAttribute="bottom" id="vI8-Um-Iyl"/> + </constraints> + </scrollView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Obq-1G-1Dv"> + <rect key="frame" x="0.0" y="652" width="393" height="200"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zZD-Dw-hLM"> + <rect key="frame" x="0.0" y="74" width="393" height="126"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pyy-JM-4Pd"> + <rect key="frame" x="261" y="21.666666666666629" width="111" height="34"/> + <color key="backgroundColor" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="34" id="6Nl-CN-S1r"/> + <constraint firstAttribute="width" constant="111" id="OOS-Hg-erC"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" title="确认并支付"/> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="17"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="completeAction:" destination="-1" eventType="touchUpInside" id="b6g-LP-usR"/> + </connections> + </button> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="合计" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JBC-49-la1"> + <rect key="frame" x="19.666666666666664" y="30" width="28.666666666666664" height="17"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/> + <nil key="textColor"/> + <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="M0e-rH-WtI"> + <rect key="frame" x="53.333333333333343" y="31.333333333333368" width="47" 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"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="bottomMargin" secondItem="Pyy-JM-4Pd" secondAttribute="bottom" constant="28.5" id="N0G-EG-xk9"/> + <constraint firstAttribute="trailing" secondItem="Pyy-JM-4Pd" secondAttribute="trailing" constant="21" id="RoM-sw-iu1"/> + <constraint firstItem="M0e-rH-WtI" firstAttribute="leading" secondItem="JBC-49-la1" secondAttribute="trailing" constant="5" id="fCj-BL-1bO"/> + <constraint firstItem="Pyy-JM-4Pd" firstAttribute="centerY" secondItem="JBC-49-la1" secondAttribute="centerY" id="hvn-yw-c3j"/> + <constraint firstItem="M0e-rH-WtI" firstAttribute="centerY" secondItem="JBC-49-la1" secondAttribute="centerY" id="iJ0-vD-NtC"/> + <constraint firstItem="Pyy-JM-4Pd" firstAttribute="top" secondItem="zZD-Dw-hLM" secondAttribute="top" constant="21.5" id="pXj-Zn-UWT"/> + <constraint firstItem="JBC-49-la1" firstAttribute="leading" secondItem="zZD-Dw-hLM" secondAttribute="leading" constant="19.5" id="z7o-9a-Uki"/> + </constraints> + </view> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9jh-cC-nHB"> + <rect key="frame" x="20.666666666666668" y="40.666666666666629" width="13.000000000000004" height="13"/> + <constraints> + <constraint firstAttribute="width" constant="13" id="IBF-jr-z9B"/> + <constraint firstAttribute="height" constant="13" id="V4I-Tw-Hxq"/> + </constraints> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="icon_choose_small_2"/> + <state key="selected" image="icon_choose_small_s"/> + <connections> + <action selector="readAgreementAction:" destination="-1" eventType="touchUpInside" id="GM6-Su-Dlt"/> + </connections> + </button> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我已阅读并同意" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jye-SN-JpG"> + <rect key="frame" x="38.666666666666657" y="39.333333333333371" width="93" height="15.666666666666664"/> + <fontDescription key="fontDescription" type="system" pointSize="13"/> + <color key="textColor" red="0.49803921568627452" green="0.49803921568627452" blue="0.49803921568627452" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Pu-d3-I9P"> + <rect key="frame" x="136.66666666666666" y="33" width="153.99999999999997" height="28"/> + <fontDescription key="fontDescription" type="system" pointSize="13"/> + <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.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + <connections> + <action selector="webAgreementAction:" destination="-1" eventType="touchUpInside" id="lQQ-SI-FRJ"/> + </connections> + </button> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="内容" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A9Y-9h-ygH"> + <rect key="frame" x="295.66666666666669" y="39.333333333333371" width="26.666666666666686" height="15.666666666666664"/> + <fontDescription key="fontDescription" type="system" pointSize="13"/> + <color key="textColor" red="0.49803921569999998" green="0.49803921569999998" blue="0.49803921569999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" red="0.96470588235294119" green="0.96470588235294119" blue="0.96470588235294119" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstItem="jye-SN-JpG" firstAttribute="centerY" secondItem="9jh-cC-nHB" secondAttribute="centerY" id="4uv-QN-KbO"/> + <constraint firstItem="9jh-cC-nHB" firstAttribute="leading" secondItem="Obq-1G-1Dv" secondAttribute="leading" constant="20.5" id="BAt-W9-wQ3"/> + <constraint firstAttribute="trailing" secondItem="zZD-Dw-hLM" secondAttribute="trailing" id="QNj-HH-BI8"/> + <constraint firstAttribute="height" constant="200" id="SY9-Mu-JJ9"/> + <constraint firstAttribute="bottom" secondItem="zZD-Dw-hLM" secondAttribute="bottom" id="VpP-mK-kyn"/> + <constraint firstItem="A9Y-9h-ygH" firstAttribute="leading" secondItem="5Pu-d3-I9P" secondAttribute="trailing" constant="5" id="XBX-AX-6Id"/> + <constraint firstItem="A9Y-9h-ygH" firstAttribute="centerY" secondItem="9jh-cC-nHB" secondAttribute="centerY" id="c9X-yt-FKJ"/> + <constraint firstItem="zZD-Dw-hLM" firstAttribute="leading" secondItem="Obq-1G-1Dv" secondAttribute="leading" id="i9z-mv-DHb"/> + <constraint firstItem="5Pu-d3-I9P" firstAttribute="leading" secondItem="jye-SN-JpG" secondAttribute="trailing" constant="5" id="q5m-YL-LGA"/> + <constraint firstItem="jye-SN-JpG" firstAttribute="leading" secondItem="9jh-cC-nHB" secondAttribute="trailing" constant="5" id="qwc-IC-lkt"/> + <constraint firstItem="zZD-Dw-hLM" firstAttribute="top" secondItem="9jh-cC-nHB" secondAttribute="bottom" constant="20.5" id="vw8-uk-x3o"/> + <constraint firstItem="5Pu-d3-I9P" firstAttribute="centerY" secondItem="9jh-cC-nHB" secondAttribute="centerY" id="wil-L5-3cB"/> + </constraints> + </view> + </subviews> + <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="jDI-6t-fTs" secondAttribute="bottom" id="76U-vg-IWM"/> + <constraint firstAttribute="bottom" secondItem="Obq-1G-1Dv" secondAttribute="bottom" id="OPT-8Z-cDT"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="jDI-6t-fTs" secondAttribute="trailing" id="Oze-d1-Fo4"/> + <constraint firstItem="Obq-1G-1Dv" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="d3q-1L-OOX"/> + <constraint firstItem="jDI-6t-fTs" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="hE9-Y9-CQv"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Obq-1G-1Dv" secondAttribute="trailing" id="iK0-gu-tri"/> + <constraint firstItem="jDI-6t-fTs" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="qRi-DQ-rsJ"/> + </constraints> + <point key="canvasLocation" x="136.64122137404578" y="20.422535211267608"/> + </view> + </objects> + <resources> + <image name="icon_choose_small_2" width="13" height="13"/> + <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"/> + </systemColor> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Home/View/CommentCommentHeaderView.swift b/XQMuse/Root/Home/View/CommentCommentHeaderView.swift new file mode 100644 index 0000000..2a992f3 --- /dev/null +++ b/XQMuse/Root/Home/View/CommentCommentHeaderView.swift @@ -0,0 +1,89 @@ +// +// CommentCommentHeaderView.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools + +class CommentCommentHeaderView: UITableViewHeaderFooterView { + + private var img_userCover:UIImageView! + private var label_userName:UILabel! + private var label_content:UILabel! + private var btn_belike:UIButton! + private var label_datetime:UILabel! + + override init(reuseIdentifier: String?) { + super.init(reuseIdentifier: reuseIdentifier) + + setUI() + } + + private func setUI(){ + + img_userCover = UIImageView() + img_userCover.backgroundColor = .gray + img_userCover.jq_cornerRadius = 19.25 + contentView.addSubview(img_userCover) + img_userCover.snp.makeConstraints { make in + make.top.equalTo(22.5) + make.left.equalTo(22) + make.width.height.equalTo(38.5) + } + + label_userName = UILabel() + label_userName.text = "张小胖" + label_userName.font = UIFont.systemFont(ofSize: 14, weight: .bold) + label_userName.textColor = UIColor(hexString: "#383838") + contentView.addSubview(label_userName) + label_userName.snp.makeConstraints {[unowned self] make in + make.left.equalTo(self.img_userCover.snp.right).offset(12.5) + make.centerY.equalTo(self.img_userCover) + make.height.equalTo(13.5) + make.right.equalTo(-50) + } + + btn_belike = UIButton(type: .custom) + btn_belike.setImage(UIImage(named: "btn_good"), for: .normal) + contentView.addSubview(btn_belike) + btn_belike.snp.makeConstraints { make in + make.width.height.equalTo(30) + make.right.equalTo(-20) + make.centerY.equalTo(label_userName) + } + + label_content = UILabel() + label_content.text = "众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好众生皆苦,心态放好" + label_content.font = UIFont.systemFont(ofSize: 12.5, weight: .bold) + label_content.numberOfLines = 0 + label_content.textColor = UIColor(hexString: "#383838") + contentView.addSubview(label_content) + label_content.snp.makeConstraints {[unowned self] make in + make.top.equalTo(self.label_userName.snp.bottom).offset(12.5) + make.left.equalTo(self.label_userName.snp.left) + make.right.equalTo(-10) + make.height.greaterThanOrEqualTo(13.5) + } + + label_datetime = UILabel() + label_datetime.text = "2024-10-25 21:23" + label_datetime.font = UIFont.systemFont(ofSize: 9.41, weight: .medium) + label_datetime.textColor = UIColor(hexString: "#B6B6B6") + contentView.addSubview(label_datetime) + label_datetime.snp.makeConstraints {[unowned self] make in + make.top.equalTo(self.label_content.snp.bottom).offset(9) + make.left.equalTo(self.label_userName.snp.left) + make.height.equalTo(7) + make.bottom.equalToSuperview().offset(-10) + } + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git a/XQMuse/Root/Home/View/HomeHeaderVC.swift b/XQMuse/Root/Home/View/HomeHeaderVC.swift index 369b445..ca62bbe 100644 --- a/XQMuse/Root/Home/View/HomeHeaderVC.swift +++ b/XQMuse/Root/Home/View/HomeHeaderVC.swift @@ -63,3 +63,57 @@ } } + +class HomeHeaderView_1: UICollectionReusableView{ + private var label_title:UILabel! + private var label_subTitle:UILabel! + private(set) var btn_more:UIButton! + + override init(frame: CGRect) { + super.init(frame: frame) + setUI() + } + + private func setUI(){ + backgroundColor = .white + + label_title = UILabel() + label_title.font = .systemFont(ofSize: 21) + label_title.textColor = UIColor(hexStr: "#252A23") + addSubview(label_title) + label_title.snp.makeConstraints { make in + make.left.equalTo(19) + make.top.equalTo(25.5) + make.height.equalTo(19.5) + } + + label_subTitle = UILabel() + label_subTitle.font = .systemFont(ofSize: 8) + label_subTitle.textColor = UIColor(hexStr: "#A1A1A1") + addSubview(label_subTitle) + label_subTitle.snp.makeConstraints { make in + make.left.equalTo(19) + make.top.equalTo(label_title.snp.bottom).offset(9) + make.height.equalTo(5.5) + } + + btn_more = UIButton(type: .custom) + btn_more.setImage(UIImage(named: "btn_more"), for: .normal) + addSubview(btn_more) + btn_more.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.right.equalTo(-18.5) + make.width.equalTo(21) + make.height.equalTo(16) + } + } + + func setTitle(_ title:String,subTitle:String){ + label_title.text = title + label_subTitle.text = subTitle + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/XQMuse/Root/Home/View/PaymentOrderResultTopView.swift b/XQMuse/Root/Home/View/PaymentOrderResultTopView.swift new file mode 100644 index 0000000..704b384 --- /dev/null +++ b/XQMuse/Root/Home/View/PaymentOrderResultTopView.swift @@ -0,0 +1,35 @@ +// +// PaymentOrderResultTopView.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools + +class PaymentOrderResultTopView: UIView,JQNibView{ + + + @IBOutlet weak var label_price: UILabel! + @IBOutlet weak var btn_lookCourse: UIButton! + + override func awakeFromNib() { + super.awakeFromNib() + } + + @IBAction func backRootAction(_ sender: UIButton) { + JQ_currentNavigationController().popToRootViewController(animated: true) + } + + @IBAction func lookCourseAction(_ sender: UIButton) { +// let vc = HomeItemDetailVC() +// JQ_currentViewController().jq_push(vc: vc) + } + + + override func layoutSubviews() { + super.layoutSubviews() + btn_lookCourse.jq_gradientNibColor(colorArr: [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 20) + } +} diff --git a/XQMuse/Root/Home/View/PaymentOrderResultTopView.xib b/XQMuse/Root/Home/View/PaymentOrderResultTopView.xib new file mode 100644 index 0000000..2768715 --- /dev/null +++ b/XQMuse/Root/Home/View/PaymentOrderResultTopView.xib @@ -0,0 +1,121 @@ +<?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"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="PaymentOrderResultTopView" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="446" height="497"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_success_full" translatesAutoresizingMaskIntoConstraints="NO" id="mgD-oQ-zrB"> + <rect key="frame" x="203" y="49" width="40" height="40"/> + <constraints> + <constraint firstAttribute="height" constant="40" id="QfZ-XE-fPk"/> + <constraint firstAttribute="width" constant="40" id="RRI-ss-kRL"/> + </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="Vka-pM-ru5"> + <rect key="frame" x="194.33333333333334" y="109" width="57.333333333333343" height="20"/> + <constraints> + <constraint firstAttribute="height" constant="20" id="SWT-Sd-K2H"/> + </constraints> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> + <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="2980.00" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hDa-VO-Vzk"> + <rect key="frame" x="160.66666666666666" y="165" width="124.99999999999997" height="37"/> + <constraints> + <constraint firstAttribute="height" constant="37" id="9iu-Ck-Y6k"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="30"/> + <color key="textColor" red="1" green="0.56470588235294117" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <stackView opaque="NO" contentMode="scaleToFill" spacing="28" translatesAutoresizingMaskIntoConstraints="NO" id="YSN-KS-kvL"> + <rect key="frame" x="69" y="238" width="308" height="40"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dSe-ud-2f1"> + <rect key="frame" x="0.0" y="0.0" width="140" height="40"/> + <constraints> + <constraint firstAttribute="width" constant="140" id="KJI-qN-yKV"/> + </constraints> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> + <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.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" 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="20"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="ld_borderColorXIB"> + <color key="value" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="number" keyPath="ld_borderWidthXIB"> + <real key="value" value="1"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="backRootAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="4hh-39-Uur"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ber-Ph-V3S"> + <rect key="frame" x="168" y="0.0" width="140" height="40"/> + <color key="backgroundColor" red="0.68627450980000004" green="0.79215686269999996" blue="0.59607843140000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="width" constant="140" id="Ure-sX-8tw"/> + </constraints> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" title="查看课程"/> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="20"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="lookCourseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="cH2-C0-P6A"/> + </connections> + </button> + </subviews> + <constraints> + <constraint firstAttribute="height" constant="40" id="wwu-Aj-T3Z"/> + </constraints> + </stackView> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="YSN-KS-kvL" firstAttribute="top" secondItem="hDa-VO-Vzk" secondAttribute="bottom" constant="36" id="A1T-Ct-hRw"/> + <constraint firstItem="Vka-pM-ru5" firstAttribute="centerX" secondItem="mgD-oQ-zrB" secondAttribute="centerX" id="ErP-1R-DQc"/> + <constraint firstItem="mgD-oQ-zrB" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="UMW-JZ-qPo"/> + <constraint firstItem="hDa-VO-Vzk" firstAttribute="top" secondItem="Vka-pM-ru5" secondAttribute="bottom" constant="36" id="VTL-4p-1DR"/> + <constraint firstItem="Vka-pM-ru5" firstAttribute="top" secondItem="mgD-oQ-zrB" secondAttribute="bottom" constant="20" id="ah5-Sm-gIS"/> + <constraint firstItem="YSN-KS-kvL" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="eRB-0r-Pw4"/> + <constraint firstItem="hDa-VO-Vzk" firstAttribute="centerX" secondItem="mgD-oQ-zrB" secondAttribute="centerX" id="vfJ-ca-4A7"/> + <constraint firstItem="mgD-oQ-zrB" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="49" id="zDJ-bC-aYO"/> + </constraints> + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> + <connections> + <outlet property="btn_lookCourse" destination="Ber-Ph-V3S" id="GQR-Kj-KTd"/> + <outlet property="label_price" destination="hDa-VO-Vzk" id="AaM-U3-GkQ"/> + </connections> + <point key="canvasLocation" x="122.13740458015266" y="-104.5774647887324"/> + </view> + </objects> + <resources> + <image name="icon_success_full" width="40" height="40"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Me/VC/VIPCenterVC.swift b/XQMuse/Root/Me/VC/VIPCenterVC.swift new file mode 100644 index 0000000..76ee13f --- /dev/null +++ b/XQMuse/Root/Me/VC/VIPCenterVC.swift @@ -0,0 +1,127 @@ +// +// VIPCenterVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools + +class VIPCenterVC: BaseVC { + + @IBOutlet weak var collectionView: UICollectionView! + private var selectIndex = 0 + + override func viewDidLoad() { + super.viewDidLoad() + title = "会员中心" + + collectionView.delegate = self + collectionView.dataSource = self + collectionView.showsHorizontalScrollIndicator = false + collectionView.contentInset = UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15) + collectionView.register(VipCenterCCell.self, forCellWithReuseIdentifier: "cell") + } +} + +extension VIPCenterVC:UICollectionViewDelegate & UICollectionViewDataSource{ + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + selectIndex = indexPath.row + collectionView.reloadData() + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! VipCenterCCell + cell.isSelect(indexPath.row == selectIndex) + return cell + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 5 + } +} + +extension VIPCenterVC:UICollectionViewDelegateFlowLayout{ + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: 111, height: 132) + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 11.5 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 11.5 + } +} + +class VipCenterCCell:UICollectionViewCell{ + + private var label_title:UILabel! + private var label_price:UILabel! + private var lable_priorDay:UILabel! + + override init(frame: CGRect) { + super.init(frame: frame) + contentView.jq_cornerRadius = 10 + contentView.backgroundColor = UIColor(hexString: "#EFF2F2") + setUI() + } + + + func setUI(){ + label_title = UILabel() + label_title.text = "年度会员" + label_title.textAlignment = .center + label_title.textColor = UIColor(hexString: "#353535") + label_title.font = .systemFont(ofSize: 16, weight: .medium) + contentView.addSubview(label_title) + label_title.snp.makeConstraints { make in + make.top.equalTo(31) + make.centerX.equalToSuperview() + make.height.equalTo(15) + } + + label_price = UILabel() + label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "199", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString + label_price.textAlignment = .center + label_price.font = .systemFont(ofSize: 16, weight: .medium) + contentView.addSubview(label_price) + label_price.snp.makeConstraints { make in + make.top.equalTo(label_title.snp.bottom).offset(15.5) + make.centerX.equalToSuperview() + make.height.equalTo(15) + } + + lable_priorDay = UILabel() + lable_priorDay.text = "¥0/天" + lable_priorDay.textAlignment = .center + lable_priorDay.font = .systemFont(ofSize: 11, weight: .medium) + contentView.addSubview(lable_priorDay) + lable_priorDay.snp.makeConstraints { make in + make.top.equalTo(label_price.snp.bottom).offset(15.5) + make.centerX.equalToSuperview() + make.height.equalTo(15) + } + } + + func isSelect(_ state:Bool){ + if state{ + contentView.backgroundColor = UIColor(hexString: "#A6C586") + label_title.textColor = .white + lable_priorDay.textColor = .white + label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: .white).add(string: "199", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: .white).mutableAttributedString + }else{ + contentView.backgroundColor = UIColor(hexString: "#EFF2F2") + label_title.textColor = UIColor(hexString: "#353535") + lable_priorDay.textColor = UIColor(hexString: "#B7B7B7") + label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "199", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString + } + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/XQMuse/Root/Me/VC/VIPCenterVC.xib b/XQMuse/Root/Me/VC/VIPCenterVC.xib new file mode 100644 index 0000000..03139b4 --- /dev/null +++ b/XQMuse/Root/Me/VC/VIPCenterVC.xib @@ -0,0 +1,205 @@ +<?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="VIPCenterVC" customModule="XQMuse" customModuleProvider="target"> + <connections> + <outlet property="collectionView" destination="Ue5-Zy-CjC" id="lPV-ex-sdB"/> + <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="VLP-Hy-naC"> + <rect key="frame" x="0.0" y="0.0" width="393" height="297"/> + </imageView> + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bkf-bh-gzu"> + <rect key="frame" x="0.0" y="59" width="393" height="759"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="L2t-aS-dfp"> + <rect key="frame" x="0.0" y="0.0" width="393" height="462.66666666666669"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="h8a-aO-hri"> + <rect key="frame" x="14" y="54.666666666666679" width="365" height="113.33333333333331"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_vip_u" translatesAutoresizingMaskIntoConstraints="NO" id="w2X-DC-MsM"> + <rect key="frame" x="0.0" y="0.0" width="365" height="113.33333333333333"/> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="心泉·疗愈会员" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YxW-A0-Oga"> + <rect key="frame" x="19.666666666666657" y="23.333333333333329" width="151" height="21"/> + <constraints> + <constraint firstAttribute="height" constant="21" id="jjF-Bb-zsz"/> + </constraints> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="22"/> + <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="升级为高级会员,解锁全部体验" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="teL-7U-G1S"> + <rect key="frame" x="19" y="85.999999999999986" width="143.33333333333334" height="12"/> + <fontDescription key="fontDescription" type="system" pointSize="10"/> + <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <constraints> + <constraint firstAttribute="width" secondItem="h8a-aO-hri" secondAttribute="height" multiplier="1:0.311" id="HXf-AV-84L"/> + <constraint firstAttribute="bottom" secondItem="w2X-DC-MsM" secondAttribute="bottom" id="Id9-B8-cpn"/> + <constraint firstAttribute="trailing" secondItem="w2X-DC-MsM" secondAttribute="trailing" id="UQH-42-3iR"/> + <constraint firstItem="w2X-DC-MsM" firstAttribute="top" secondItem="h8a-aO-hri" secondAttribute="top" id="VlU-n4-JnN"/> + <constraint firstItem="teL-7U-G1S" firstAttribute="top" secondItem="YxW-A0-Oga" secondAttribute="bottom" constant="41.5" id="Y8p-oG-uQE"/> + <constraint firstItem="YxW-A0-Oga" firstAttribute="leading" secondItem="h8a-aO-hri" secondAttribute="leading" constant="19.5" id="ZIt-OF-kPt"/> + <constraint firstItem="teL-7U-G1S" firstAttribute="leading" secondItem="h8a-aO-hri" secondAttribute="leading" constant="19" id="mBe-9s-o0A"/> + <constraint firstItem="YxW-A0-Oga" firstAttribute="top" secondItem="h8a-aO-hri" secondAttribute="top" constant="23.5" id="qjQ-kX-c9q"/> + <constraint firstItem="w2X-DC-MsM" firstAttribute="leading" secondItem="h8a-aO-hri" secondAttribute="leading" id="tk8-g5-TUO"/> + </constraints> + </view> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="VIP会员套餐" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yWI-Sm-wHz"> + <rect key="frame" x="31.666666666666664" y="197" width="102.66666666666669" height="21"/> + <fontDescription key="fontDescription" type="system" pointSize="18"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="Ue5-Zy-CjC"> + <rect key="frame" x="0.0" y="230.66666666666669" width="393" height="132"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="132" id="p8z-dn-4dN"/> + </constraints> + <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="10" minimumInteritemSpacing="10" id="hVs-Ty-M7N"> + <size key="itemSize" 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"/> + </collectionViewFlowLayout> + </collectionView> + <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a9D-PO-axc"> + <rect key="frame" x="0.0" y="362.66666666666669" width="393" height="100"/> + <constraints> + <constraint firstAttribute="height" constant="100" id="AWY-C0-cXO"/> + </constraints> + <wkWebViewConfiguration key="configuration"> + <audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/> + <wkPreferences key="preferences"/> + </wkWebViewConfiguration> + </wkWebView> + </subviews> + <constraints> + <constraint firstItem="a9D-PO-axc" firstAttribute="top" secondItem="Ue5-Zy-CjC" secondAttribute="bottom" id="15v-6A-0ji"/> + <constraint firstItem="Ue5-Zy-CjC" firstAttribute="top" secondItem="yWI-Sm-wHz" secondAttribute="bottom" constant="12.5" id="8id-05-Hve"/> + <constraint firstItem="yWI-Sm-wHz" firstAttribute="top" secondItem="h8a-aO-hri" secondAttribute="bottom" constant="29" id="G5O-gM-Ih2"/> + <constraint firstAttribute="trailing" secondItem="h8a-aO-hri" secondAttribute="trailing" constant="14" id="Hkp-e9-iFe"/> + <constraint firstAttribute="trailing" secondItem="a9D-PO-axc" secondAttribute="trailing" id="N5F-Dn-3Lx"/> + <constraint firstAttribute="trailing" secondItem="Ue5-Zy-CjC" secondAttribute="trailing" id="NFg-Zq-3Ts"/> + <constraint firstItem="h8a-aO-hri" firstAttribute="leading" secondItem="L2t-aS-dfp" secondAttribute="leading" constant="14" id="cJj-1e-X2q"/> + <constraint firstItem="a9D-PO-axc" firstAttribute="leading" secondItem="L2t-aS-dfp" secondAttribute="leading" id="gth-kx-AnP"/> + <constraint firstItem="yWI-Sm-wHz" firstAttribute="leading" secondItem="L2t-aS-dfp" secondAttribute="leading" constant="31.5" id="h7x-TM-VyG"/> + <constraint firstAttribute="bottom" secondItem="a9D-PO-axc" secondAttribute="bottom" id="rmB-ii-O0j"/> + <constraint firstItem="h8a-aO-hri" firstAttribute="top" secondItem="L2t-aS-dfp" secondAttribute="top" constant="54.5" id="wLL-2b-kPO"/> + <constraint firstItem="Ue5-Zy-CjC" firstAttribute="leading" secondItem="L2t-aS-dfp" secondAttribute="leading" id="yRz-xH-u7d"/> + </constraints> + </view> + </subviews> + <constraints> + <constraint firstAttribute="bottom" secondItem="L2t-aS-dfp" secondAttribute="bottom" id="J9p-nF-AxN"/> + <constraint firstItem="L2t-aS-dfp" firstAttribute="leading" secondItem="bkf-bh-gzu" secondAttribute="leading" id="O3u-1O-MwX"/> + <constraint firstAttribute="trailing" secondItem="L2t-aS-dfp" secondAttribute="trailing" id="QkV-Xp-1qW"/> + <constraint firstItem="L2t-aS-dfp" firstAttribute="centerX" secondItem="bkf-bh-gzu" secondAttribute="centerX" id="bfq-QO-tXk"/> + <constraint firstItem="L2t-aS-dfp" firstAttribute="top" secondItem="bkf-bh-gzu" secondAttribute="top" id="ti0-Sy-Y1M"/> + </constraints> + </scrollView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qa1-cj-VoU"> + <rect key="frame" x="0.0" y="715" width="393" height="137"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="s5h-cp-fKN"> + <rect key="frame" x="21.666666666666657" y="0.0" width="350" height="53.666666666666664"/> + <color key="backgroundColor" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="53.5" id="zkd-En-arm"/> + </constraints> + <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="18"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" title="立即开通"/> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="26.75"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6ZY-8B-NMH"> + <rect key="frame" x="22" y="76.666666666666629" width="12.666666666666664" height="12.333333333333329"/> + <constraints> + <constraint firstAttribute="width" constant="12.5" id="uyB-GW-yJB"/> + <constraint firstAttribute="height" constant="12.5" id="zwf-eK-ebh"/> + </constraints> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="icon_choose_small_1"/> + <state key="selected" image="icon_choose_small_s"/> + </button> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="同意" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tC0-1B-EV0"> + <rect key="frame" x="40" y="74.666666666666629" width="27" height="16"/> + <fontDescription key="fontDescription" type="system" pointSize="13"/> + <color key="textColor" red="0.49803921568627452" green="0.49803921568627452" blue="0.49803921568627452" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tne-Fn-Oic"> + <rect key="frame" x="72" y="68.666666666666629" width="94" height="28"/> + <fontDescription key="fontDescription" type="system" pointSize="13"/> + <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.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + </button> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="137" id="482-Qh-0Jv"/> + <constraint firstItem="Tne-Fn-Oic" firstAttribute="leading" secondItem="tC0-1B-EV0" secondAttribute="trailing" constant="5" id="9QN-fL-PVq"/> + <constraint firstItem="6ZY-8B-NMH" firstAttribute="top" secondItem="s5h-cp-fKN" secondAttribute="bottom" constant="23" id="Jut-EV-WxL"/> + <constraint firstItem="s5h-cp-fKN" firstAttribute="leading" secondItem="Qa1-cj-VoU" secondAttribute="leading" constant="21.5" id="Mmx-Rp-0pN"/> + <constraint firstItem="tC0-1B-EV0" firstAttribute="centerY" secondItem="6ZY-8B-NMH" secondAttribute="centerY" id="Nvb-nK-Bbm"/> + <constraint firstAttribute="trailing" secondItem="s5h-cp-fKN" secondAttribute="trailing" constant="21.5" id="Xai-on-BIU"/> + <constraint firstItem="tC0-1B-EV0" firstAttribute="leading" secondItem="6ZY-8B-NMH" secondAttribute="trailing" constant="5.5" id="gHh-CI-WH0"/> + <constraint firstItem="Tne-Fn-Oic" firstAttribute="centerY" secondItem="6ZY-8B-NMH" secondAttribute="centerY" id="ggp-TL-60y"/> + <constraint firstItem="6ZY-8B-NMH" firstAttribute="leading" secondItem="Qa1-cj-VoU" secondAttribute="leading" constant="22" id="hEr-N9-UVg"/> + <constraint firstItem="s5h-cp-fKN" firstAttribute="top" secondItem="Qa1-cj-VoU" secondAttribute="top" id="rid-ce-fN9"/> + </constraints> + </view> + </subviews> + <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Qa1-cj-VoU" secondAttribute="trailing" id="17Q-Ar-AY7"/> + <constraint firstItem="VLP-Hy-naC" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="DUD-QX-KBG"/> + <constraint firstItem="bkf-bh-gzu" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="GX4-yE-DfY"/> + <constraint firstAttribute="bottom" secondItem="Qa1-cj-VoU" secondAttribute="bottom" id="ORB-Sa-yIO"/> + <constraint firstItem="VLP-Hy-naC" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="TTg-Kg-sh0"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="bkf-bh-gzu" secondAttribute="trailing" id="bNU-bF-fJd"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="bkf-bh-gzu" secondAttribute="bottom" id="gKn-YZ-1jy"/> + <constraint firstItem="bkf-bh-gzu" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="kpV-5I-DMc"/> + <constraint firstItem="Qa1-cj-VoU" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="m1A-Bv-NWm"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="VLP-Hy-naC" secondAttribute="trailing" id="ul0-Xj-7Nb"/> + </constraints> + <point key="canvasLocation" x="140" y="21"/> + </view> + </objects> + <resources> + <image name="bg_vip_u" width="364.66665649414062" height="113.66666412353516"/> + <image name="bg_voice_top" width="390" height="297"/> + <image name="icon_choose_small_1" width="16" height="16"/> + <image name="icon_choose_small_s" width="15.666666984558105" height="16"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Other/View/ChooseOptView.swift b/XQMuse/Root/Other/View/ChooseOptView.swift new file mode 100644 index 0000000..b10a088 --- /dev/null +++ b/XQMuse/Root/Other/View/ChooseOptView.swift @@ -0,0 +1,84 @@ +// +// ChooseOptView.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/15. +// + +import UIKit +import JQTools + +class ChooseOptView: UIView,JQNibView{ + + @IBOutlet weak var view_container: UIView! + @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var cons_hight: NSLayoutConstraint! + @IBOutlet weak var cons_bottom: NSLayoutConstraint! + @IBOutlet weak var cons_cancel_bottom: NSLayoutConstraint! + private var items = [String]() + private var clouse:((Int)->Void)! + + override func awakeFromNib() { + super.awakeFromNib() + + tableView.delegate = self + tableView.dataSource = self + tableView.separatorStyle = .none + tableView.register(UITableViewCell.self, forCellReuseIdentifier: "_cell") + alpha = 0 + cons_hight.constant = 0 + cons_cancel_bottom.constant = UIDevice.jq_safeEdges.bottom + cons_bottom.constant = -JQ_ScreenW + layoutIfNeeded() + } + + static func show(titles:[String],clouse:@escaping (Int)->Void){ + let optView = ChooseOptView.jq_loadNibView() + optView.items = titles + optView.clouse = clouse + optView.frame = sceneDelegate?.window?.frame ?? .zero + sceneDelegate?.window?.addSubview(optView) + + optView.cons_hight.constant = Double(titles.count) * 56 + optView.cons_bottom.constant = -UIDevice.jq_safeEdges.bottom + UIView.animate(withDuration: 0.4) { + optView.alpha = 1 + optView.layoutIfNeeded() + } + } + + override func layoutSubviews() { + super.layoutSubviews() + view_container.jq_cornerPart(byRoundingCorners: [.topLeft,.topRight], radii: 22) + } + + @IBAction func cancelAction(_ sender: Any) { + self.cons_bottom.constant = -JQ_ScreenW + UIView.animate(withDuration: 0.4) { + self.alpha = 0 + self.layoutIfNeeded() + } completion: { _ in + self.removeFromSuperview() + } + } +} + +extension ChooseOptView:UITableViewDelegate & UITableViewDataSource{ + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return items.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "_cell") + cell!.textLabel?.font = UIFont.systemFont(ofSize: 15, weight: .medium) + cell!.textLabel?.textColor = UIColor(hexString: "#92A87D") + cell!.selectionStyle = .none + cell?.textLabel?.textAlignment = .center + cell?.textLabel?.text = items[indexPath.row] + return cell! + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return 56 + } +} diff --git a/XQMuse/Root/Other/View/ChooseOptView.xib b/XQMuse/Root/Other/View/ChooseOptView.xib new file mode 100644 index 0000000..34c543b --- /dev/null +++ b/XQMuse/Root/Other/View/ChooseOptView.xib @@ -0,0 +1,88 @@ +<?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"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="ChooseOptView" 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="7hd-X4-jnx"> + <rect key="frame" x="0.0" y="697" width="393" height="155"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kna-Ip-6Bx"> + <rect key="frame" x="0.0" y="57" width="393" height="56"/> + <constraints> + <constraint firstAttribute="height" constant="56" id="gEr-Pp-xqo"/> + </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.19607843137254902" green="0.19607843137254902" blue="0.19607843137254902" alpha="0.90000000000000002" colorSpace="custom" customColorSpace="sRGB"/> + </state> + <connections> + <action selector="cancelAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="M22-Kg-s2o"/> + </connections> + </button> + <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="qay-oH-tG7"> + <rect key="frame" x="0.0" y="0.0" width="393" height="56"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="56" id="uir-ga-z0g"/> + </constraints> + </tableView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dpN-jw-hER"> + <rect key="frame" x="0.0" y="56" width="393" 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="r8G-HJ-2pB"/> + </constraints> + </view> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="dpN-jw-hER" firstAttribute="leading" secondItem="7hd-X4-jnx" secondAttribute="leading" id="0Mz-qH-S7E"/> + <constraint firstItem="kna-Ip-6Bx" firstAttribute="leading" secondItem="7hd-X4-jnx" secondAttribute="leading" id="2hD-56-mub"/> + <constraint firstAttribute="bottomMargin" secondItem="kna-Ip-6Bx" secondAttribute="bottom" id="CZq-RJ-SgM"/> + <constraint firstItem="dpN-jw-hER" firstAttribute="top" secondItem="qay-oH-tG7" secondAttribute="bottom" id="EgY-36-Rv7"/> + <constraint firstItem="dpN-jw-hER" firstAttribute="top" secondItem="qay-oH-tG7" secondAttribute="bottom" id="Ird-Ph-U3G"/> + <constraint firstItem="qay-oH-tG7" firstAttribute="leading" secondItem="7hd-X4-jnx" secondAttribute="leading" id="J4F-q7-cVV"/> + <constraint firstAttribute="trailing" secondItem="qay-oH-tG7" secondAttribute="trailing" id="K2S-zI-gMA"/> + <constraint firstItem="kna-Ip-6Bx" firstAttribute="top" secondItem="dpN-jw-hER" secondAttribute="bottom" id="gMw-Yj-rrf"/> + <constraint firstAttribute="trailing" secondItem="kna-Ip-6Bx" secondAttribute="trailing" id="iJy-rf-I9w"/> + <constraint firstAttribute="trailing" secondItem="dpN-jw-hER" secondAttribute="trailing" id="ssg-as-5Kn"/> + <constraint firstItem="qay-oH-tG7" firstAttribute="top" secondItem="7hd-X4-jnx" secondAttribute="top" id="ydC-Vg-0F3"/> + </constraints> + </view> + </subviews> + <viewLayoutGuide key="safeArea" id="Eor-ew-SMj"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="7hd-X4-jnx" secondAttribute="bottom" id="BTa-FL-IQa"/> + <constraint firstItem="7hd-X4-jnx" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="c5H-tP-bEh"/> + <constraint firstAttribute="trailing" secondItem="7hd-X4-jnx" secondAttribute="trailing" id="msX-tJ-Wk6"/> + </constraints> + <connections> + <outlet property="cons_bottom" destination="BTa-FL-IQa" id="U1i-Ow-Lpd"/> + <outlet property="cons_cancel_bottom" destination="CZq-RJ-SgM" id="Ing-kw-4fE"/> + <outlet property="cons_hight" destination="uir-ga-z0g" id="J81-3E-ScT"/> + <outlet property="tableView" destination="qay-oH-tG7" id="4oP-yA-wHr"/> + <outlet property="view_container" destination="7hd-X4-jnx" id="uLl-Sn-M7n"/> + </connections> + <point key="canvasLocation" x="81.679389312977094" y="20.422535211267608"/> + </view> + </objects> + <resources> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> -- Gitblit v1.7.1