UI
杨锴
2024-08-15 572899a6a72fb71c0a29ec5774de3b61ddd4bd7e
UI
9个文件已修改
61个文件已添加
3075 ■■■■■ 已修改文件
XQMuse.xcodeproj/project.pbxproj 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_good.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_freee.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Config/HoverHeaderFlowLayout.swift 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/CourseVC.swift 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.xib 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.xib 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/HomeVC.swift 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/CommentUserInputContentTCell.swift 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/CommentUserInputContentTCell.xib 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/CommentListVC.swift 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/CommentListVC.xib 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeItemDetailVC.swift 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeItemDetailVC.xib 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeTyroGuideVC.swift 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/PaymentOrderResultVC.swift 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/PaymentOrderResultVC.xib 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/PaymentOrderVC.swift 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/PaymentOrderVC.xib 487 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/View/CommentCommentHeaderView.swift 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/View/HomeHeaderVC.swift 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/View/PaymentOrderResultTopView.swift 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/View/PaymentOrderResultTopView.xib 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/VIPCenterVC.swift 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/VIPCenterVC.xib 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/ChooseOptView.swift 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/ChooseOptView.xib 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 */,
XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@2x.png
XQMuse/Assets.xcassets/Btns/btn_close_1.imageset/btn_close_1@3x.png
XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@2x.png
XQMuse/Assets.xcassets/Btns/btn_collect_1_s.imageset/btn_collect_1_s@3x.png
XQMuse/Assets.xcassets/Btns/btn_good.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@2x.png
XQMuse/Assets.xcassets/Btns/btn_good.imageset/btn_good@3x.png
XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@2x.png
XQMuse/Assets.xcassets/Btns/btn_like_u.imageset/btn_like_u@3x.png
XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@2x.png
XQMuse/Assets.xcassets/Btns/btn_roll_loop.imageset/btn_roll_loop@3x.png
XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@2x.png
XQMuse/Assets.xcassets/Icons/icon_choose_small_1.imageset/icon_choose_small_1@3x.png
XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@2x.png
XQMuse/Assets.xcassets/Icons/icon_choose_small_2.imageset/icon_choose_small_2@3x.png
XQMuse/Assets.xcassets/Icons/icon_freee.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@2x.png
XQMuse/Assets.xcassets/Icons/icon_freee.imageset/icon_freee@3x.png
XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@2x.png
XQMuse/Assets.xcassets/Icons/icon_success_full.imageset/icon_success_full@3x.png
XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@2x.png
XQMuse/Assets.xcassets/Icons/icon_wallet.imageset/icon_wallet@3x.png
XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@2x.png
XQMuse/Assets.xcassets/Placeholder/bg_vip.imageset/bg_vip@3x.png
XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/Contents.json
New file
@@ -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
  }
}
XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@2x.png
XQMuse/Assets.xcassets/Placeholder/bg_vip_u.imageset/bg_vip_u@3x.png
XQMuse/Config/HoverHeaderFlowLayout.swift
New file
@@ -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
                }
}
XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift
New file
@@ -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
    }
}
XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib
New file
@@ -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>
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()
                }
}
XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift
New file
@@ -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)
                }
}
XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift
New file
@@ -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.
    }
    */
}
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift
New file
@@ -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
                }
}
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.xib
New file
@@ -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>
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>
XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift
New file
@@ -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)
                }
}
XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.xib
New file
@@ -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>
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)
XQMuse/Root/Home/TCell/CommentUserInputContentTCell.swift
New file
@@ -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
    }
}
XQMuse/Root/Home/TCell/CommentUserInputContentTCell.xib
New file
@@ -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>
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{
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
                }
}
XQMuse/Root/Home/VC/CommentListVC.swift
New file
@@ -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")
                }
}
XQMuse/Root/Home/VC/CommentListVC.xib
New file
@@ -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>
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) {
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"/>
XQMuse/Root/Home/VC/HomeTyroGuideVC.swift
New file
@@ -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)
                                }
                }
}
XQMuse/Root/Home/VC/PaymentOrderResultVC.swift
New file
@@ -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)
                                }
                }
}
XQMuse/Root/Home/VC/PaymentOrderResultVC.xib
New file
@@ -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>
XQMuse/Root/Home/VC/PaymentOrderVC.swift
New file
@@ -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)
                }
}
XQMuse/Root/Home/VC/PaymentOrderVC.xib
New file
@@ -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="邀请注册&gt;">
                                                        <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>
XQMuse/Root/Home/View/CommentCommentHeaderView.swift
New file
@@ -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")
                }
}
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")
                }
}
XQMuse/Root/Home/View/PaymentOrderResultTopView.swift
New file
@@ -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)
                }
}
XQMuse/Root/Home/View/PaymentOrderResultTopView.xib
New file
@@ -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>
XQMuse/Root/Me/VC/VIPCenterVC.swift
New file
@@ -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")
                }
}
XQMuse/Root/Me/VC/VIPCenterVC.xib
New file
@@ -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>
XQMuse/Root/Other/View/ChooseOptView.swift
New file
@@ -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
                }
}
XQMuse/Root/Other/View/ChooseOptView.xib
New file
@@ -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>