From d9a2bbdb9595037432c36766489110c4b9229ac0 Mon Sep 17 00:00:00 2001 From: 杨锴 <841720330@qq.com> Date: 星期一, 19 八月 2024 16:32:04 +0800 Subject: [PATCH] fix --- XQMuse/Assets.xcassets/Icons/course_4.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/icon_local.imageset/icon_local@2x.png | 0 XQMuse/Root/Course/VC/CourseDetialVC.swift | 308 ++++++ XQMuse/Assets.xcassets/Icons/course_2.imageset/course_2@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_offline.imageset/icon_offline@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_phone.imageset/icon_phone@3x.png | 0 XQMuse/Assets.xcassets/Icons/course_4.imageset/course_4@3x.png | 0 XQMuse/Root/Course/TCell/MenuListTCell.xib | 54 + Pods/Pods.xcodeproj/project.pbxproj | 10 XQMuse/Root/Course/TCell/CourseDetail_2_TCell.xib | 55 + XQMuse/Root/Pavilion/PavilionVC.swift | 77 + XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/course_6.imageset/course_6@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_offline.imageset/icon_offline@3x.png | 0 XQMuse/Base/BaseNav.swift | 6 XQMuse/Assets.xcassets/Icons/course_8.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/icon_phone.imageset/Contents.json | 22 XQMuse/Root/Course/VC/CourseDetialVideoVC.xib | 84 + XQMuse.xcodeproj/project.pbxproj | 144 ++ XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/bg_pavilion_top@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_search.imageset/icon_search@3x.png | 0 XQMuse/Assets.xcassets/Icons/course_4.imageset/course_4@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_phone.imageset/icon_phone@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_search.imageset/icon_search@2x.png | 0 XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/Contents.json | 22 XQMuse/Root/Pavilion/CCell/PavilionItemCell.xib | 119 ++ XQMuse/Assets.xcassets/Icons/course_3.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/course_5.imageset/course_5@2x.png | 0 XQMuse/Root/Pavilion/PavilionVC.xib | 109 ++ XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift | 29 XQMuse/Root/Course/TCell/CourseDetail_1_TCell.xib | 55 + XQMuse/Assets.xcassets/Icons/course_8.imageset/course_8@3x.png | 0 XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib | 50 + XQMuse/Assets.xcassets/Icons/course_7.imageset/course_7@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/icon_time_1@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/icon_user_1@3x.png | 0 XQMuse/SceneDelegate.swift | 1 XQMuse/Assets.xcassets/Icons/course_2.imageset/course_2@2x.png | 0 XQMuse/Root/Home/HomeVC.swift | 1 XQMuse/Root/Course/View/CourseSendGiftView.xib | 111 ++ XQMuse/Assets.xcassets/Icons/course_7.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/course_3.imageset/course_3@3x.png | 0 XQMuse/Root/Course/VC/CourseDetialVideoVC.swift | 61 + XQMuse/Assets.xcassets/Icons/icon_local.imageset/icon_local@3x.png | 0 XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/btn_sendGift@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_time.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/icon_time_1@3x.png | 0 XQMuse/Assets.xcassets/Icons/course_1.imageset/course_1@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/course_2.imageset/Contents.json | 22 XQMuse/Root/Course/View/CourseDetailHeaderView.xib | 90 + XQMuse/Base/BaseVC.swift | 1 XQMuse/Assets.xcassets/Icons/course_6.imageset/Contents.json | 22 XQMuse/Root/Course/VC/CourseMenuVC.swift | 123 ++ XQMuse/Assets.xcassets/Icons/icon_time.imageset/icon_time@3x.png | 0 XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift | 84 + XQMuse/Root/Pavilion/VC/PavilionDetailVC.xib | 226 ++++ XQMuse/Assets.xcassets/Icons/course_5.imageset/course_5@3x.png | 0 XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/course_7.imageset/course_7@3x.png | 0 XQMuse/Assets.xcassets/Icons/icon_time.imageset/icon_time@2x.png | 0 XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift | 51 XQMuse/Assets.xcassets/Icons/course_3.imageset/course_3@2x.png | 0 XQMuse/Root/Course/View/CourseSendGiftView.swift | 63 + XQMuse/Assets.xcassets/Icons/course_5.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/course_1.imageset/Contents.json | 22 XQMuse/Assets.xcassets/Icons/course_6.imageset/course_6@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_local.imageset/Contents.json | 22 XQMuse/Root/Course/TCell/CourseDetail_3_TCell.xib | 64 + XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/btn_sendGift@2x.png | 0 XQMuse/Root/Course/TCell/CourseDetail_2_Inner_TCell.xib | 119 ++ XQMuse/Root/Course/TCell/MenuListTCell.swift | 19 XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift | 17 XQMuse/Root/Pavilion/VC/PavilionSearchVC.swift | 78 + XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/icon_user_1@2x.png | 0 XQMuse/Root/Course/TCell/CourseDetail_2_Inner_TCell.swift | 24 XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/bg_pavilion_top@2x.png | 0 XQMuse/Assets.xcassets/Icons/course_8.imageset/course_8@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_search.imageset/Contents.json | 22 XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib | 100 ++ XQMuse/Assets.xcassets/Icons/course_1.imageset/course_1@2x.png | 0 XQMuse/Assets.xcassets/Icons/icon_offline.imageset/Contents.json | 22 XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift | 55 + XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift | 27 XQMuse/Root/Other/View/VideoView.swift | 22 XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift | 56 + XQMuse/Root/Course/View/CourseDetailHeaderView.swift | 17 XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift | 36 XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib | 50 XQMuse/Root/Course/TCell/CourseDetail_1_TCell.swift | 28 90 files changed, 2,960 insertions(+), 38 deletions(-) diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 59a93d0..79f7da0 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -3767,7 +3767,7 @@ B8E1D8B18DBE43F148D8D9E86FF2B00A /* JQ_PhotoTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JQ_PhotoTool.swift; sourceTree = "<group>"; }; B8EA55A5A6DB4233FEF4585820E0B43C /* OSSAllRequestNeededMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OSSAllRequestNeededMessage.m; path = AliyunOSSSDK/OSSAllRequestNeededMessage.m; sourceTree = "<group>"; }; B8F2E5DB318CB0208BE8EB770F059547 /* RxCollectionViewDataSourcePrefetchingProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDataSourcePrefetchingProxy.swift; path = RxCocoa/iOS/Proxies/RxCollectionViewDataSourcePrefetchingProxy.swift; sourceTree = "<group>"; }; - B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ObjectMapper; path = ObjectMapper.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ObjectMapper.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B9154CF3AE667C5BF038006941996F24 /* OSSGetObjectTaggingResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OSSGetObjectTaggingResult.h; path = AliyunOSSSDK/OSSGetObjectTaggingResult.h; sourceTree = "<group>"; }; B942A9A96463372AA05EF5387CBD484C /* PrimitiveSequence+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PrimitiveSequence+Concurrency.swift"; path = "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Concurrency.swift"; sourceTree = "<group>"; }; B959A71819DE5B506E289332C6178D9A /* DataRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataRequest.swift; path = Source/Core/DataRequest.swift; sourceTree = "<group>"; }; @@ -5411,7 +5411,7 @@ 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, 1CAB16A12A28E8BE749202B03552307A /* ObjcExceptionBridging */, EF7CAA240FEB94F29DBE3D91C8BDE565 /* ObjcExceptionBridging-ObjcExceptionBridging */, - B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper */, + B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper.framework */, FE6B8ABE5D0AD8A55BCFA48D21915C07 /* ObjectMapper-Privacy */, 9BF996C0A7457E7225FF8490CAF59206 /* Pods-XQMuse */, 8596B7A0C5A3E188061E9EDDAB573FCE /* QMUIKit */, @@ -9006,7 +9006,7 @@ ); name = ObjectMapper; productName = ObjectMapper; - productReference = B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper */; + productReference = B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper.framework */; productType = "com.apple.product-type.framework"; }; 18BB9F72CD23264E98BCA91A99917C56 /* UserDefaultsStore */ = { @@ -14198,7 +14198,7 @@ GCC_PREFIX_HEADER = "Target Support Files/ObjectMapper/ObjectMapper-prefix.pch"; INFOPLIST_FILE = "Target Support Files/ObjectMapper/ObjectMapper-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -14799,7 +14799,7 @@ GCC_PREFIX_HEADER = "Target Support Files/ObjectMapper/ObjectMapper-prefix.pch"; INFOPLIST_FILE = "Target Support Files/ObjectMapper/ObjectMapper-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/XQMuse.xcodeproj/project.pbxproj b/XQMuse.xcodeproj/project.pbxproj index 61bf7ac..7cf6f16 100644 --- a/XQMuse.xcodeproj/project.pbxproj +++ b/XQMuse.xcodeproj/project.pbxproj @@ -13,6 +13,8 @@ 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 */; }; + 130AA4A82C72F71700F20944 /* CourseDetialVideoVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130AA4A72C72F71700F20944 /* CourseDetialVideoVC.xib */; }; + 130AA4A92C72F71700F20944 /* CourseDetialVideoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130AA4A62C72F71700F20944 /* CourseDetialVideoVC.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 */; }; @@ -25,15 +27,27 @@ 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 */; }; + 13334FD52C731C1B00914086 /* VideoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13334FD42C731C1B00914086 /* VideoView.swift */; }; + 13334FD72C731E0B00914086 /* PavilionVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13334FD62C731E0B00914086 /* PavilionVC.xib */; }; + 13334FDB2C7321BE00914086 /* PavilionItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13334FD92C7321BE00914086 /* PavilionItemCell.swift */; }; + 13334FDC2C7321BE00914086 /* PavilionItemCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13334FDA2C7321BE00914086 /* PavilionItemCell.xib */; }; + 1333DC792C72D8C400D8ACAE /* CourseDetail_3_TCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1333DC782C72D8C400D8ACAE /* CourseDetail_3_TCell.xib */; }; + 1333DC7A2C72D8C400D8ACAE /* CourseDetail_3_TCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1333DC772C72D8C400D8ACAE /* CourseDetail_3_TCell.swift */; }; + 1333DC7C2C72E78F00D8ACAE /* CourseSendGiftView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1333DC7B2C72E78F00D8ACAE /* CourseSendGiftView.swift */; }; + 1333DC7E2C72E7A500D8ACAE /* CourseSendGiftView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1333DC7D2C72E7A500D8ACAE /* CourseSendGiftView.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 */; }; + 13391E022C73334000B9513F /* PavilionDetailVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13391E012C73334000B9513F /* PavilionDetailVC.xib */; }; + 13391E032C73334000B9513F /* PavilionDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13391E002C73334000B9513F /* PavilionDetailVC.swift */; }; 134783CF2C6C86EC0096C736 /* PlaySettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134783CE2C6C86EC0096C736 /* PlaySettingView.swift */; }; 134783D12C6C86F40096C736 /* PlaySettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134783D02C6C86F40096C736 /* PlaySettingView.xib */; }; 134A45322C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134A45302C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift */; }; 134A45352C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134A45342C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift */; }; 134A45392C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134A45372C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift */; }; 134A453A2C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134A45382C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib */; }; + 134CC7E02C73283700EAEFB7 /* PavilionSearchVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134CC7DF2C73283700EAEFB7 /* PavilionSearchVC.xib */; }; + 134CC7E12C73283700EAEFB7 /* PavilionSearchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134CC7DE2C73283700EAEFB7 /* PavilionSearchVC.swift */; }; 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 */; }; @@ -93,6 +107,12 @@ 139C16602C6A0FBB00A924D9 /* TestLeftRightCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139C165F2C6A0FBB00A924D9 /* TestLeftRightCollectionViewFlowLayout.swift */; }; 139C16632C6A108A00A924D9 /* HomeRelaxBannerCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139C16612C6A108A00A924D9 /* HomeRelaxBannerCCell.swift */; }; 139C16642C6A108A00A924D9 /* HomeRelaxBannerCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 139C16622C6A108A00A924D9 /* HomeRelaxBannerCCell.xib */; }; + 13A659462C6F4B9E00F731FA /* CourseDetail_1_TCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13A659452C6F4B9E00F731FA /* CourseDetail_1_TCell.xib */; }; + 13A659472C6F4B9E00F731FA /* CourseDetail_1_TCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13A659442C6F4B9E00F731FA /* CourseDetail_1_TCell.swift */; }; + 13A6594A2C6F4F2D00F731FA /* CourseDetail_2_TCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13A659492C6F4F2D00F731FA /* CourseDetail_2_TCell.xib */; }; + 13A6594B2C6F4F2D00F731FA /* CourseDetail_2_TCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13A659482C6F4F2D00F731FA /* CourseDetail_2_TCell.swift */; }; + 13A6594E2C6F641100F731FA /* CourseDetail_2_Inner_TCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13A6594D2C6F641100F731FA /* CourseDetail_2_Inner_TCell.xib */; }; + 13A6594F2C6F641100F731FA /* CourseDetail_2_Inner_TCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13A6594C2C6F641100F731FA /* CourseDetail_2_Inner_TCell.swift */; }; 13D256B42C6C68E7006FC2D7 /* ShareView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D256B32C6C68E7006FC2D7 /* ShareView.swift */; }; 13D256B72C6C68F8006FC2D7 /* ShareView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13D256B62C6C68F8006FC2D7 /* ShareView.xib */; }; 13E0FBF92C6C8BDE009997AE /* CountdownChooseListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13E0FBF82C6C8BDE009997AE /* CountdownChooseListView.swift */; }; @@ -102,6 +122,14 @@ 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 */; }; + 13FB6D7D2C6EE27100A0685D /* CourseOfficialItemCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13FB6D7C2C6EE27100A0685D /* CourseOfficialItemCCell.xib */; }; + 13FB6D7E2C6EE27100A0685D /* CourseOfficialItemCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13FB6D7B2C6EE27100A0685D /* CourseOfficialItemCCell.swift */; }; + 13FB6D802C6EED6000A0685D /* CourseMenuVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13FB6D7F2C6EED6000A0685D /* CourseMenuVC.swift */; }; + 13FB6D842C6EEFE900A0685D /* MenuListTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13FB6D832C6EEFE900A0685D /* MenuListTCell.xib */; }; + 13FB6D852C6EEFE900A0685D /* MenuListTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13FB6D822C6EEFE900A0685D /* MenuListTCell.swift */; }; + 13FB6D872C6EF9DE00A0685D /* CourseDetialVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13FB6D862C6EF9DE00A0685D /* CourseDetialVC.swift */; }; + 13FB6D8A2C6EFB4D00A0685D /* CourseDetailHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13FB6D892C6EFB4D00A0685D /* CourseDetailHeaderView.swift */; }; + 13FB6D8C2C6EFB5400A0685D /* CourseDetailHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13FB6D8B2C6EFB5400A0685D /* CourseDetailHeaderView.xib */; }; D80DD987C5D5D23DD582763D /* Pods_XQMuse.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 627C13604519744922724D64 /* Pods_XQMuse.framework */; }; /* End PBXBuildFile section */ @@ -112,6 +140,8 @@ 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>"; }; + 130AA4A62C72F71700F20944 /* CourseDetialVideoVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseDetialVideoVC.swift; sourceTree = "<group>"; }; + 130AA4A72C72F71700F20944 /* CourseDetialVideoVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseDetialVideoVC.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>"; }; @@ -124,15 +154,27 @@ 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>"; }; + 13334FD42C731C1B00914086 /* VideoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoView.swift; sourceTree = "<group>"; }; + 13334FD62C731E0B00914086 /* PavilionVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PavilionVC.xib; sourceTree = "<group>"; }; + 13334FD92C7321BE00914086 /* PavilionItemCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PavilionItemCell.swift; sourceTree = "<group>"; }; + 13334FDA2C7321BE00914086 /* PavilionItemCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PavilionItemCell.xib; sourceTree = "<group>"; }; + 1333DC772C72D8C400D8ACAE /* CourseDetail_3_TCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseDetail_3_TCell.swift; sourceTree = "<group>"; }; + 1333DC782C72D8C400D8ACAE /* CourseDetail_3_TCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseDetail_3_TCell.xib; sourceTree = "<group>"; }; + 1333DC7B2C72E78F00D8ACAE /* CourseSendGiftView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseSendGiftView.swift; sourceTree = "<group>"; }; + 1333DC7D2C72E7A500D8ACAE /* CourseSendGiftView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseSendGiftView.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>"; }; + 13391E002C73334000B9513F /* PavilionDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PavilionDetailVC.swift; sourceTree = "<group>"; }; + 13391E012C73334000B9513F /* PavilionDetailVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PavilionDetailVC.xib; sourceTree = "<group>"; }; 134783CE2C6C86EC0096C736 /* PlaySettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaySettingView.swift; sourceTree = "<group>"; }; 134783D02C6C86F40096C736 /* PlaySettingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PlaySettingView.xib; sourceTree = "<group>"; }; 134A45302C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseVCOfficalCommentVC.swift; sourceTree = "<group>"; }; 134A45342C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseVCTeacherSpecialVC.swift; sourceTree = "<group>"; }; 134A45372C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseOfficalCommendTopCCell.swift; sourceTree = "<group>"; }; 134A45382C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseOfficalCommendTopCCell.xib; sourceTree = "<group>"; }; + 134CC7DE2C73283700EAEFB7 /* PavilionSearchVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PavilionSearchVC.swift; sourceTree = "<group>"; }; + 134CC7DF2C73283700EAEFB7 /* PavilionSearchVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PavilionSearchVC.xib; sourceTree = "<group>"; }; 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>"; }; @@ -194,6 +236,12 @@ 139C165F2C6A0FBB00A924D9 /* TestLeftRightCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestLeftRightCollectionViewFlowLayout.swift; sourceTree = "<group>"; }; 139C16612C6A108A00A924D9 /* HomeRelaxBannerCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeRelaxBannerCCell.swift; sourceTree = "<group>"; }; 139C16622C6A108A00A924D9 /* HomeRelaxBannerCCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeRelaxBannerCCell.xib; sourceTree = "<group>"; }; + 13A659442C6F4B9E00F731FA /* CourseDetail_1_TCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseDetail_1_TCell.swift; sourceTree = "<group>"; }; + 13A659452C6F4B9E00F731FA /* CourseDetail_1_TCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseDetail_1_TCell.xib; sourceTree = "<group>"; }; + 13A659482C6F4F2D00F731FA /* CourseDetail_2_TCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseDetail_2_TCell.swift; sourceTree = "<group>"; }; + 13A659492C6F4F2D00F731FA /* CourseDetail_2_TCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseDetail_2_TCell.xib; sourceTree = "<group>"; }; + 13A6594C2C6F641100F731FA /* CourseDetail_2_Inner_TCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseDetail_2_Inner_TCell.swift; sourceTree = "<group>"; }; + 13A6594D2C6F641100F731FA /* CourseDetail_2_Inner_TCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseDetail_2_Inner_TCell.xib; sourceTree = "<group>"; }; 13D256B32C6C68E7006FC2D7 /* ShareView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareView.swift; sourceTree = "<group>"; }; 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>"; }; @@ -203,6 +251,14 @@ 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>"; }; + 13FB6D7B2C6EE27100A0685D /* CourseOfficialItemCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseOfficialItemCCell.swift; sourceTree = "<group>"; }; + 13FB6D7C2C6EE27100A0685D /* CourseOfficialItemCCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseOfficialItemCCell.xib; sourceTree = "<group>"; }; + 13FB6D7F2C6EED6000A0685D /* CourseMenuVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseMenuVC.swift; sourceTree = "<group>"; }; + 13FB6D822C6EEFE900A0685D /* MenuListTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuListTCell.swift; sourceTree = "<group>"; }; + 13FB6D832C6EEFE900A0685D /* MenuListTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MenuListTCell.xib; sourceTree = "<group>"; }; + 13FB6D862C6EF9DE00A0685D /* CourseDetialVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseDetialVC.swift; sourceTree = "<group>"; }; + 13FB6D892C6EFB4D00A0685D /* CourseDetailHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseDetailHeaderView.swift; sourceTree = "<group>"; }; + 13FB6D8B2C6EFB5400A0685D /* CourseDetailHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseDetailHeaderView.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>"; }; @@ -246,11 +302,24 @@ path = VC; sourceTree = "<group>"; }; + 13334FD82C73219A00914086 /* CCell */ = { + isa = PBXGroup; + children = ( + 13334FD92C7321BE00914086 /* PavilionItemCell.swift */, + 13334FDA2C7321BE00914086 /* PavilionItemCell.xib */, + ); + path = CCell; + sourceTree = "<group>"; + }; 134A452F2C6E0D3800538D78 /* VC */ = { isa = PBXGroup; children = ( 134A45302C6E0D6400538D78 /* CourseVCOfficalCommentVC.swift */, 134A45342C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift */, + 13FB6D7F2C6EED6000A0685D /* CourseMenuVC.swift */, + 13FB6D862C6EF9DE00A0685D /* CourseDetialVC.swift */, + 130AA4A62C72F71700F20944 /* CourseDetialVideoVC.swift */, + 130AA4A72C72F71700F20944 /* CourseDetialVideoVC.xib */, ); path = VC; sourceTree = "<group>"; @@ -260,8 +329,21 @@ children = ( 134A45372C6E167D00538D78 /* CourseOfficalCommendTopCCell.swift */, 134A45382C6E167D00538D78 /* CourseOfficalCommendTopCCell.xib */, + 13FB6D7B2C6EE27100A0685D /* CourseOfficialItemCCell.swift */, + 13FB6D7C2C6EE27100A0685D /* CourseOfficialItemCCell.xib */, ); path = CCell; + sourceTree = "<group>"; + }; + 134CC7DD2C73282400EAEFB7 /* VC */ = { + isa = PBXGroup; + children = ( + 134CC7DE2C73283700EAEFB7 /* PavilionSearchVC.swift */, + 134CC7DF2C73283700EAEFB7 /* PavilionSearchVC.xib */, + 13391E002C73334000B9513F /* PavilionDetailVC.swift */, + 13391E012C73334000B9513F /* PavilionDetailVC.xib */, + ); + path = VC; sourceTree = "<group>"; }; 137175C42C6C3C2100B38EF1 /* Fonts */ = { @@ -446,6 +528,8 @@ 13985DC52C69E9260046B6DC /* Course */ = { isa = PBXGroup; children = ( + 13FB6D882C6EFA8400A0685D /* View */, + 13FB6D812C6EEFD200A0685D /* TCell */, 134A45362C6E165F00538D78 /* CCell */, 134A452F2C6E0D3800538D78 /* VC */, 13985DC62C69E9550046B6DC /* CourseVC.swift */, @@ -456,7 +540,10 @@ 13985DC82C69E9940046B6DC /* Pavilion */ = { isa = PBXGroup; children = ( + 134CC7DD2C73282400EAEFB7 /* VC */, + 13334FD82C73219A00914086 /* CCell */, 13985DCB2C69E9FA0046B6DC /* PavilionVC.swift */, + 13334FD62C731E0B00914086 /* PavilionVC.xib */, ); path = Pavilion; sourceTree = "<group>"; @@ -513,6 +600,35 @@ 13E0FBFA2C6C8BE3009997AE /* CountdownChooseListView.xib */, 1377B4102C6DAA1900CF7CA5 /* ChooseOptView.swift */, 1377B4122C6DAA2000CF7CA5 /* ChooseOptView.xib */, + 13334FD42C731C1B00914086 /* VideoView.swift */, + ); + path = View; + sourceTree = "<group>"; + }; + 13FB6D812C6EEFD200A0685D /* TCell */ = { + isa = PBXGroup; + children = ( + 13FB6D822C6EEFE900A0685D /* MenuListTCell.swift */, + 13FB6D832C6EEFE900A0685D /* MenuListTCell.xib */, + 13A659442C6F4B9E00F731FA /* CourseDetail_1_TCell.swift */, + 13A659452C6F4B9E00F731FA /* CourseDetail_1_TCell.xib */, + 13A659482C6F4F2D00F731FA /* CourseDetail_2_TCell.swift */, + 13A659492C6F4F2D00F731FA /* CourseDetail_2_TCell.xib */, + 13A6594C2C6F641100F731FA /* CourseDetail_2_Inner_TCell.swift */, + 13A6594D2C6F641100F731FA /* CourseDetail_2_Inner_TCell.xib */, + 1333DC772C72D8C400D8ACAE /* CourseDetail_3_TCell.swift */, + 1333DC782C72D8C400D8ACAE /* CourseDetail_3_TCell.xib */, + ); + path = TCell; + sourceTree = "<group>"; + }; + 13FB6D882C6EFA8400A0685D /* View */ = { + isa = PBXGroup; + children = ( + 13FB6D892C6EFB4D00A0685D /* CourseDetailHeaderView.swift */, + 13FB6D8B2C6EFB5400A0685D /* CourseDetailHeaderView.xib */, + 1333DC7B2C72E78F00D8ACAE /* CourseSendGiftView.swift */, + 1333DC7D2C72E7A500D8ACAE /* CourseSendGiftView.xib */, ); path = View; sourceTree = "<group>"; @@ -596,19 +712,29 @@ files = ( 13985DD42C69FC1F0046B6DC /* Home_Style_1_TCell.xib in Resources */, 1377B4132C6DAA2000CF7CA5 /* ChooseOptView.xib in Resources */, + 13A6594E2C6F641100F731FA /* CourseDetail_2_Inner_TCell.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 */, + 13334FDC2C7321BE00914086 /* PavilionItemCell.xib in Resources */, + 1333DC7E2C72E7A500D8ACAE /* CourseSendGiftView.xib in Resources */, 137ABE352C6B3F64003A91C5 /* ForgotPasswordVC.xib in Resources */, + 13FB6D842C6EEFE900A0685D /* MenuListTCell.xib in Resources */, 1377768E2C6AFD25004FF994 /* LoginVC.xib in Resources */, + 134CC7E02C73283700EAEFB7 /* PavilionSearchVC.xib in Resources */, 130913EE2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.xib in Resources */, 130ED7E82C6AEF5900D0736E /* Home_Style_4_TCell.xib in Resources */, + 13391E022C73334000B9513F /* PavilionDetailVC.xib in Resources */, 1377B4172C6DCC4300CF7CA5 /* Home_Style_4_Inner_1_CCell.xib in Resources */, + 13FB6D8C2C6EFB5400A0685D /* CourseDetailHeaderView.xib in Resources */, 13985D9F2C69B2440046B6DC /* Assets.xcassets in Resources */, 13EFCDC22C6DD27A00B51AE6 /* PaymentOrderVC.xib in Resources */, + 130AA4A82C72F71700F20944 /* CourseDetialVideoVC.xib in Resources */, + 13FB6D7D2C6EE27100A0685D /* CourseOfficialItemCCell.xib in Resources */, 13D256B72C6C68F8006FC2D7 /* ShareView.xib in Resources */, 13985DC32C69E0BF0046B6DC /* HomeTopMenuCCell.xib in Resources */, + 13A6594A2C6F4F2D00F731FA /* CourseDetail_2_TCell.xib in Resources */, 139C165E2C6A0AC600A924D9 /* Home_Style_3_TCell.xib in Resources */, 137175C82C6C3C6D00B38EF1 /* Agenda-Light.otf in Resources */, 13985DA22C69B2440046B6DC /* Base in Resources */, @@ -627,6 +753,9 @@ 130ED7ED2C6AF05C00D0736E /* Home_Style_4_Inner_CCell.xib in Resources */, 137175C62C6C3C4700B38EF1 /* SourceHanSansCN-Regular.otf in Resources */, 131E75C42C6B87C500E2C85D /* ForgotPasswordChangeVC.xib in Resources */, + 1333DC792C72D8C400D8ACAE /* CourseDetail_3_TCell.xib in Resources */, + 13A659462C6F4B9E00F731FA /* CourseDetail_1_TCell.xib in Resources */, + 13334FD72C731E0B00914086 /* PavilionVC.xib in Resources */, 139C16642C6A108A00A924D9 /* HomeRelaxBannerCCell.xib in Resources */, 13E0FBFB2C6C8BE3009997AE /* CountdownChooseListView.xib in Resources */, 130B765A2C6C4963006371AF /* HomeRelaxVoiceCCell.xib in Resources */, @@ -684,6 +813,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 13FB6D872C6EF9DE00A0685D /* CourseDetialVC.swift in Sources */, 13D256B42C6C68E7006FC2D7 /* ShareView.swift in Sources */, 139466472C6B8E0200F6FB15 /* UpdatePhoneVC.swift in Sources */, 137175CB2C6C412A00B38EF1 /* BackgroundVoiceVC.swift in Sources */, @@ -691,6 +821,7 @@ 13985D962C69B2410046B6DC /* AppDelegate.swift in Sources */, 13985DB02C69B7B00046B6DC /* BaseTabBarVC.swift in Sources */, 13985DB22C69B7B00046B6DC /* TapBtn.swift in Sources */, + 13FB6D802C6EED6000A0685D /* CourseMenuVC.swift in Sources */, 13985DBA2C69B8ED0046B6DC /* HomeVC.swift in Sources */, 13985DAF2C69B7B00046B6DC /* BaseNav.swift in Sources */, 134A45352C6E0E0000538D78 /* CourseVCTeacherSpecialVC.swift in Sources */, @@ -700,14 +831,17 @@ 1377B4112C6DAA1900CF7CA5 /* ChooseOptView.swift in Sources */, 1385E0062C6C558200AADB1F /* HomeRelaxBanner_2_CCell.swift in Sources */, 130913EB2C6DE33200418201 /* PaymentOrderResultVC.swift in Sources */, + 13FB6D7E2C6EE27100A0685D /* CourseOfficialItemCCell.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 */, + 13FB6D8A2C6EFB4D00A0685D /* CourseDetailHeaderView.swift in Sources */, 13985DB82C69B80D0046B6DC /* Themes.swift in Sources */, 13985DD02C69F2A80046B6DC /* HomeHeaderVC.swift in Sources */, + 130AA4A92C72F71700F20944 /* CourseDetialVideoVC.swift in Sources */, 1336EFA52C6DEB550075E070 /* HoverHeaderFlowLayout.swift in Sources */, 13985DB52C69B7DF0046B6DC /* Def.swift in Sources */, 139228AF2C6B836B006F3CB6 /* Popup_1_View.swift in Sources */, @@ -717,6 +851,8 @@ 13985DCC2C69E9FA0046B6DC /* PavilionVC.swift in Sources */, 13985DC42C69E0BF0046B6DC /* HomeTopMenuCCell.swift in Sources */, 1385E00A2C6C57A900AADB1F /* HomeItemDetailVC.swift in Sources */, + 1333DC7C2C72E78F00D8ACAE /* CourseSendGiftView.swift in Sources */, + 13391E032C73334000B9513F /* PavilionDetailVC.swift in Sources */, 134783CF2C6C86EC0096C736 /* PlaySettingView.swift in Sources */, 139C16592C6A053000A924D9 /* Home_Style_2_TCell.swift in Sources */, 130B76592C6C4963006371AF /* HomeRelaxVoiceCCell.swift in Sources */, @@ -725,22 +861,30 @@ 13985DD52C69FC1F0046B6DC /* Home_Style_1_TCell.swift in Sources */, 132EB01C2C6B32B200990429 /* RegisterVC.swift in Sources */, 13E0FBF92C6C8BDE009997AE /* CountdownChooseListView.swift in Sources */, + 13A659472C6F4B9E00F731FA /* CourseDetail_1_TCell.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 */, + 134CC7E12C73283700EAEFB7 /* PavilionSearchVC.swift in Sources */, 139C16632C6A108A00A924D9 /* HomeRelaxBannerCCell.swift in Sources */, 131E75C52C6B87C500E2C85D /* ForgotPasswordChangeVC.swift in Sources */, + 13A6594F2C6F641100F731FA /* CourseDetail_2_Inner_TCell.swift in Sources */, + 13334FD52C731C1B00914086 /* VideoView.swift in Sources */, 130ED7E72C6AEF5900D0736E /* Home_Style_4_TCell.swift in Sources */, 130913EF2C6DE67E00418201 /* HomeRelaxBanner_2_1_CCell.swift in Sources */, + 1333DC7A2C72D8C400D8ACAE /* CourseDetail_3_TCell.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 */, + 13334FDB2C7321BE00914086 /* PavilionItemCell.swift in Sources */, + 13A6594B2C6F4F2D00F731FA /* CourseDetail_2_TCell.swift in Sources */, 1377768D2C6AFD25004FF994 /* LoginVC.swift in Sources */, + 13FB6D852C6EEFE900A0685D /* MenuListTCell.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/Contents.json b/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/Contents.json new file mode 100644 index 0000000..77e393d --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "btn_sendGift@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_sendGift@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/btn_sendGift@2x.png b/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/btn_sendGift@2x.png new file mode 100644 index 0000000..ae3dc6b --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/btn_sendGift@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/btn_sendGift@3x.png b/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/btn_sendGift@3x.png new file mode 100644 index 0000000..8ed3e91 --- /dev/null +++ b/XQMuse/Assets.xcassets/Btns/btn_sendGift.imageset/btn_sendGift@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_1.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/course_1.imageset/Contents.json new file mode 100644 index 0000000..e0c6cc7 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "course_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "course_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/course_1.imageset/course_1@2x.png b/XQMuse/Assets.xcassets/Icons/course_1.imageset/course_1@2x.png new file mode 100644 index 0000000..a667848 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_1.imageset/course_1@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_1.imageset/course_1@3x.png b/XQMuse/Assets.xcassets/Icons/course_1.imageset/course_1@3x.png new file mode 100644 index 0000000..8924f54 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_1.imageset/course_1@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_2.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/course_2.imageset/Contents.json new file mode 100644 index 0000000..f33603d --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_2.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "course_2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "course_2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/course_2.imageset/course_2@2x.png b/XQMuse/Assets.xcassets/Icons/course_2.imageset/course_2@2x.png new file mode 100644 index 0000000..70cea98 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_2.imageset/course_2@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_2.imageset/course_2@3x.png b/XQMuse/Assets.xcassets/Icons/course_2.imageset/course_2@3x.png new file mode 100644 index 0000000..60a2a7a --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_2.imageset/course_2@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_3.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/course_3.imageset/Contents.json new file mode 100644 index 0000000..d97f83d --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_3.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "course_3@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "course_3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/course_3.imageset/course_3@2x.png b/XQMuse/Assets.xcassets/Icons/course_3.imageset/course_3@2x.png new file mode 100644 index 0000000..92c58fa --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_3.imageset/course_3@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_3.imageset/course_3@3x.png b/XQMuse/Assets.xcassets/Icons/course_3.imageset/course_3@3x.png new file mode 100644 index 0000000..8f9b40f --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_3.imageset/course_3@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_4.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/course_4.imageset/Contents.json new file mode 100644 index 0000000..8c145c9 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_4.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "course_4@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "course_4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/course_4.imageset/course_4@2x.png b/XQMuse/Assets.xcassets/Icons/course_4.imageset/course_4@2x.png new file mode 100644 index 0000000..a9ac816 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_4.imageset/course_4@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_4.imageset/course_4@3x.png b/XQMuse/Assets.xcassets/Icons/course_4.imageset/course_4@3x.png new file mode 100644 index 0000000..0eb92cc --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_4.imageset/course_4@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_5.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/course_5.imageset/Contents.json new file mode 100644 index 0000000..5a860c4 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_5.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "course_5@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "course_5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/course_5.imageset/course_5@2x.png b/XQMuse/Assets.xcassets/Icons/course_5.imageset/course_5@2x.png new file mode 100644 index 0000000..948562e --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_5.imageset/course_5@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_5.imageset/course_5@3x.png b/XQMuse/Assets.xcassets/Icons/course_5.imageset/course_5@3x.png new file mode 100644 index 0000000..9c3c6db --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_5.imageset/course_5@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_6.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/course_6.imageset/Contents.json new file mode 100644 index 0000000..137c239 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_6.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "course_6@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "course_6@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/course_6.imageset/course_6@2x.png b/XQMuse/Assets.xcassets/Icons/course_6.imageset/course_6@2x.png new file mode 100644 index 0000000..56ddd73 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_6.imageset/course_6@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_6.imageset/course_6@3x.png b/XQMuse/Assets.xcassets/Icons/course_6.imageset/course_6@3x.png new file mode 100644 index 0000000..31384f0 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_6.imageset/course_6@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_7.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/course_7.imageset/Contents.json new file mode 100644 index 0000000..4daf7bf --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_7.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "course_7@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "course_7@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/course_7.imageset/course_7@2x.png b/XQMuse/Assets.xcassets/Icons/course_7.imageset/course_7@2x.png new file mode 100644 index 0000000..5444001 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_7.imageset/course_7@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_7.imageset/course_7@3x.png b/XQMuse/Assets.xcassets/Icons/course_7.imageset/course_7@3x.png new file mode 100644 index 0000000..612efc6 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_7.imageset/course_7@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_8.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/course_8.imageset/Contents.json new file mode 100644 index 0000000..36d8485 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_8.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "course_8@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "course_8@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/course_8.imageset/course_8@2x.png b/XQMuse/Assets.xcassets/Icons/course_8.imageset/course_8@2x.png new file mode 100644 index 0000000..b9f2b28 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_8.imageset/course_8@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/course_8.imageset/course_8@3x.png b/XQMuse/Assets.xcassets/Icons/course_8.imageset/course_8@3x.png new file mode 100644 index 0000000..ff029f1 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/course_8.imageset/course_8@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_local.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_local.imageset/Contents.json new file mode 100644 index 0000000..49ac673 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_local.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_local@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_local@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_local.imageset/icon_local@2x.png b/XQMuse/Assets.xcassets/Icons/icon_local.imageset/icon_local@2x.png new file mode 100644 index 0000000..8e3da0c --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_local.imageset/icon_local@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_local.imageset/icon_local@3x.png b/XQMuse/Assets.xcassets/Icons/icon_local.imageset/icon_local@3x.png new file mode 100644 index 0000000..f243077 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_local.imageset/icon_local@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/Contents.json new file mode 100644 index 0000000..bbd05fc --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_offline@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_offline@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/icon_offline@2x.png b/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/icon_offline@2x.png new file mode 100644 index 0000000..69d62ce --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/icon_offline@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/icon_offline@3x.png b/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/icon_offline@3x.png new file mode 100644 index 0000000..c8612c5 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_offline.imageset/icon_offline@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/Contents.json new file mode 100644 index 0000000..ea30758 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_phone@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_phone@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/icon_phone@2x.png b/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/icon_phone@2x.png new file mode 100644 index 0000000..3ac01ba --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/icon_phone@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/icon_phone@3x.png b/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/icon_phone@3x.png new file mode 100644 index 0000000..f692f54 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_phone.imageset/icon_phone@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_search.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_search.imageset/Contents.json new file mode 100644 index 0000000..d584047 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_search.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_search@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_search@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_search.imageset/icon_search@2x.png b/XQMuse/Assets.xcassets/Icons/icon_search.imageset/icon_search@2x.png new file mode 100644 index 0000000..ad05368 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_search.imageset/icon_search@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_search.imageset/icon_search@3x.png b/XQMuse/Assets.xcassets/Icons/icon_search.imageset/icon_search@3x.png new file mode 100644 index 0000000..5bd8c09 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_search.imageset/icon_search@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_time.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_time.imageset/Contents.json new file mode 100644 index 0000000..feb816a --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_time.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_time@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_time@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_time.imageset/icon_time@2x.png b/XQMuse/Assets.xcassets/Icons/icon_time.imageset/icon_time@2x.png new file mode 100644 index 0000000..dfcf93b --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_time.imageset/icon_time@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_time.imageset/icon_time@3x.png b/XQMuse/Assets.xcassets/Icons/icon_time.imageset/icon_time@3x.png new file mode 100644 index 0000000..dc89b24 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_time.imageset/icon_time@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/Contents.json new file mode 100644 index 0000000..9b165f8 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_time_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_time_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/icon_time_1@2x.png b/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/icon_time_1@2x.png new file mode 100644 index 0000000..1bd82d0 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/icon_time_1@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/icon_time_1@3x.png b/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/icon_time_1@3x.png new file mode 100644 index 0000000..f56a001 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_time_1.imageset/icon_time_1@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/Contents.json b/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/Contents.json new file mode 100644 index 0000000..9b8f09a --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_user_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_user_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/icon_user_1@2x.png b/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/icon_user_1@2x.png new file mode 100644 index 0000000..4655451 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/icon_user_1@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/icon_user_1@3x.png b/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/icon_user_1@3x.png new file mode 100644 index 0000000..8e247a4 --- /dev/null +++ b/XQMuse/Assets.xcassets/Icons/icon_user_1.imageset/icon_user_1@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/Contents.json b/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/Contents.json new file mode 100644 index 0000000..5ec434f --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "bg_pavilion_top@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "bg_pavilion_top@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/bg_pavilion_top@2x.png b/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/bg_pavilion_top@2x.png new file mode 100644 index 0000000..fd1e0d0 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/bg_pavilion_top@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/bg_pavilion_top@3x.png b/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/bg_pavilion_top@3x.png new file mode 100644 index 0000000..7861b69 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_pavilion_top.imageset/bg_pavilion_top@3x.png Binary files differ diff --git a/XQMuse/Base/BaseNav.swift b/XQMuse/Base/BaseNav.swift index 45103fe..520fcb1 100644 --- a/XQMuse/Base/BaseNav.swift +++ b/XQMuse/Base/BaseNav.swift @@ -12,11 +12,11 @@ /// 需要透明Nav的VC private var lucencyVCs = [LoginVC.self] - private var whiteStyleVCs = [HomeItemDetailVC.self] + private var whiteStyleVCs = [HomeItemDetailVC.self,CourseDetialVC.self,HomeItemDetailVC.self,CourseDetialVideoVC.self,PavilionDetailVC.self] open override func viewDidLoad() { super.viewDidLoad() - self.navigationBar.barTintColor = .white + self.navigationBar.barTintColor = .red self.navigationBar.tintColor = UIColor.black self.navigationBar.shadowImage = UIImage() self.navigationBar.isTranslucent = true @@ -55,7 +55,7 @@ let status = lucencyVCs.contains(where: {$0 == viewController.classForCoder}) if (navigationController.viewControllers.count == 1 || status){ if #available(iOS 15.0, *) { - navigationBar.standardAppearance.backgroundColor = .white + navigationBar.standardAppearance.backgroundColor = .clear navigationBar.scrollEdgeAppearance?.backgroundColor = .clear }else{ navigationBar.setBackgroundImage(UIImage(), for: .default) diff --git a/XQMuse/Base/BaseVC.swift b/XQMuse/Base/BaseVC.swift index 94c76aa..064d0a8 100644 --- a/XQMuse/Base/BaseVC.swift +++ b/XQMuse/Base/BaseVC.swift @@ -44,7 +44,6 @@ navigationItem.leftBarButtonItem = UIBarButtonItem.jq_creat(image: nav_back_img, target: self, alignment:.left, action: #selector(backItemEvent)).item } } - } func setRx(){ diff --git a/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift b/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift index 1595704..c55f467 100644 --- a/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift +++ b/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.swift @@ -6,12 +6,59 @@ // import UIKit +import JQTools class CourseOfficalCommendTopCCell: UICollectionViewCell { - override func awakeFromNib() { + @IBOutlet weak var view_bannerContentView: UIView! + @IBOutlet weak var collectionView: UICollectionView! + private var titleItems = [TitleItem]() + private var clouse:((Int)->Void)? + override func awakeFromNib() { super.awakeFromNib() - // Initialization code + + collectionView.delegate = self + collectionView.dataSource = self + collectionView.isScrollEnabled = false + collectionView.register(UINib(nibName: "CourseOfficialItemCCell", bundle: nil), forCellWithReuseIdentifier: "_CourseOfficialItemCCell") } + func setTitles(_ items:[TitleItem]){ + titleItems = items + collectionView.reloadData() + } + + func clickAtClouse(_ clouse:@escaping (Int)->Void){ + self.clouse = clouse + } +} + +extension CourseOfficalCommendTopCCell:UICollectionViewDelegate & UICollectionViewDataSource{ + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return titleItems.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_CourseOfficialItemCCell", for: indexPath) as! CourseOfficialItemCCell + cell.setItem(titleItems[indexPath.row]) + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + clouse?(indexPath.row) + } +} + +extension CourseOfficalCommendTopCCell:UICollectionViewDelegateFlowLayout{ + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + let w = JQ_ScreenW / 4 + return CGSize(width: w, height: 101.25) + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 5 + } + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 0 + } } diff --git a/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib b/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib index 7da392c..ef9ac9e 100644 --- a/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib +++ b/XQMuse/Root/Course/CCell/CourseOfficalCommendTopCCell.xib @@ -5,21 +5,63 @@ <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"/> <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"/> + <rect key="frame" x="0.0" y="0.0" width="328" height="408"/> <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"/> + <rect key="frame" x="0.0" y="0.0" width="328" height="408"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LpV-bY-BWS"> + <rect key="frame" x="0.0" y="0.0" width="328" height="171"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="width" secondItem="LpV-bY-BWS" secondAttribute="height" multiplier="1:0.5217" id="VfO-Ti-5ef"/> + </constraints> + </view> + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="IAR-Fq-op8"> + <rect key="frame" x="0.0" y="181" width="328" height="207"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="207" id="JM2-hK-TGn"/> + </constraints> + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="KBa-lQ-RAV"> + <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> + </subviews> </view> <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> - <size key="customSize" width="328" height="269"/> - <point key="canvasLocation" x="293.12977099236639" y="97.535211267605632"/> + <color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="IAR-Fq-op8" secondAttribute="bottom" priority="750" constant="25.5" id="XqK-na-fDy"/> + <constraint firstItem="LpV-bY-BWS" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="Yd8-Jr-VVH"/> + <constraint firstItem="IAR-Fq-op8" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="cfc-xx-VGM"/> + <constraint firstItem="IAR-Fq-op8" firstAttribute="top" secondItem="LpV-bY-BWS" secondAttribute="bottom" constant="10" id="da4-2G-4zL"/> + <constraint firstAttribute="trailing" secondItem="LpV-bY-BWS" secondAttribute="trailing" id="iHF-Rx-5et"/> + <constraint firstAttribute="trailing" secondItem="IAR-Fq-op8" secondAttribute="trailing" id="kg6-QP-VL9"/> + <constraint firstItem="LpV-bY-BWS" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="uom-LS-wPM"/> + </constraints> + <size key="customSize" width="328" height="408"/> + <connections> + <outlet property="collectionView" destination="IAR-Fq-op8" id="B6V-Mt-S1J"/> + <outlet property="view_bannerContentView" destination="LpV-bY-BWS" id="AyT-5Y-Vaq"/> + </connections> + <point key="canvasLocation" x="293.12977099236639" y="146.47887323943664"/> </collectionViewCell> </objects> + <resources> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> </document> diff --git a/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift b/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift new file mode 100644 index 0000000..822f1de --- /dev/null +++ b/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.swift @@ -0,0 +1,29 @@ +// +// CourseOfficialItemCCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/16. +// + +import UIKit + +class CourseOfficialItemCCell: UICollectionViewCell { + @IBOutlet weak var img_cover: UIImageView! + @IBOutlet weak var label_title: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + func setItem(_ item:TitleItem){ + + if let localImage = item.coverImage{ + img_cover.image = UIImage(named: localImage) + } + + label_title.text = item.title + + } + +} diff --git a/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib b/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib new file mode 100644 index 0000000..eb769a0 --- /dev/null +++ b/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib @@ -0,0 +1,50 @@ +<?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="_CourseOfficialItemCCell" id="gTV-IL-0wX" customClass="CourseOfficialItemCCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="114" height="109"/> + <autoresizingMask key="autoresizingMask"/> + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> + <rect key="frame" x="0.0" y="0.0" width="114" height="109"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_1" translatesAutoresizingMaskIntoConstraints="NO" id="D7q-iI-B0n"> + <rect key="frame" x="39.666666666666671" y="29" width="34.666666666666671" height="31.666666666666671"/> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eyG-jG-ONh"> + <rect key="frame" x="51.666666666666664" y="77" width="10.666666666666664" height="14.333333333333329"/> + <fontDescription key="fontDescription" type="system" pointSize="11"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + </view> + <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstItem="eyG-jG-ONh" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="77" id="0WR-EQ-L1f"/> + <constraint firstItem="D7q-iI-B0n" firstAttribute="centerX" secondItem="ZTg-uK-7eu" secondAttribute="centerX" id="FBJ-g1-8N6"/> + <constraint firstItem="D7q-iI-B0n" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="29" id="IfT-we-B99"/> + <constraint firstItem="eyG-jG-ONh" firstAttribute="centerX" secondItem="D7q-iI-B0n" secondAttribute="centerX" id="VBt-Ee-fVM"/> + </constraints> + <size key="customSize" width="114" height="109"/> + <connections> + <outlet property="img_cover" destination="D7q-iI-B0n" id="rE5-4z-7nC"/> + <outlet property="label_title" destination="eyG-jG-ONh" id="MMf-hZ-xMm"/> + </connections> + <point key="canvasLocation" x="129.7709923664122" y="41.197183098591552"/> + </collectionViewCell> + </objects> + <resources> + <image name="course_1" width="34.666667938232422" height="31.666666030883789"/> + </resources> +</document> diff --git a/XQMuse/Root/Course/TCell/CourseDetail_1_TCell.swift b/XQMuse/Root/Course/TCell/CourseDetail_1_TCell.swift new file mode 100644 index 0000000..6174889 --- /dev/null +++ b/XQMuse/Root/Course/TCell/CourseDetail_1_TCell.swift @@ -0,0 +1,28 @@ +// +// CourseDetail_1_TCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/16. +// + +import UIKit +import WebKit + +class CourseDetail_1_TCell: UITableViewCell { + + @IBOutlet weak var label_title: UILabel! + @IBOutlet weak var webView: WKWebView! + override func awakeFromNib() { + super.awakeFromNib() + backgroundColor = .clear + selectionStyle = .none + + webView.scrollView.isScrollEnabled = false + webView.scrollView.backgroundColor = .clear + webView.isOpaque = false + } + + func setContent(title:String,content:String){ + label_title.text = title + } +} diff --git a/XQMuse/Root/Course/TCell/CourseDetail_1_TCell.xib b/XQMuse/Root/Course/TCell/CourseDetail_1_TCell.xib new file mode 100644 index 0000000..1d4190a --- /dev/null +++ b/XQMuse/Root/Course/TCell/CourseDetail_1_TCell.xib @@ -0,0 +1,55 @@ +<?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="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_CourseDetail_1_TCell" rowHeight="183" id="KGk-i7-Jjw" customClass="CourseDetail_1_TCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="501" height="183"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" ambiguous="YES" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> + <rect key="frame" x="0.0" y="0.0" width="501" height="183"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="课程介绍" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lg9-70-w3n"> + <rect key="frame" x="21.666666666666668" y="35" width="61.333333333333329" height="14"/> + <constraints> + <constraint firstAttribute="height" constant="14" id="WNQ-mw-uOi"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/> + <color key="textColor" red="0.15686274509803921" green="0.15686274509803921" blue="0.15686274509803921" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WYV-JQ-E3S"> + <rect key="frame" x="0.0" y="68.666666666666671" width="501" height="100.00000000000001"/> + <constraints> + <constraint firstAttribute="height" constant="100" id="hfa-qQ-TpS"/> + </constraints> + <wkWebViewConfiguration key="configuration"> + <audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/> + <wkPreferences key="preferences"/> + </wkWebViewConfiguration> + </wkWebView> + </subviews> + <constraints> + <constraint firstItem="Lg9-70-w3n" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="35" id="4D5-on-wj2"/> + <constraint firstItem="WYV-JQ-E3S" firstAttribute="top" secondItem="Lg9-70-w3n" secondAttribute="bottom" constant="19.5" id="Ar0-7c-kQM"/> + <constraint firstAttribute="trailing" secondItem="WYV-JQ-E3S" secondAttribute="trailing" id="BSc-yJ-F5G"/> + <constraint firstItem="WYV-JQ-E3S" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="Mbt-TS-KCB"/> + <constraint firstItem="Lg9-70-w3n" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="21.5" id="dJv-7a-n9J"/> + <constraint firstAttribute="bottom" secondItem="WYV-JQ-E3S" secondAttribute="bottom" id="ys9-aS-J2j"/> + </constraints> + </tableViewCellContentView> + <connections> + <outlet property="label_title" destination="Lg9-70-w3n" id="NPf-Sa-PgL"/> + <outlet property="webView" destination="WYV-JQ-E3S" id="wJi-nk-vgm"/> + </connections> + <point key="canvasLocation" x="200.76335877862596" y="68.661971830985919"/> + </tableViewCell> + </objects> +</document> diff --git a/XQMuse/Root/Course/TCell/CourseDetail_2_Inner_TCell.swift b/XQMuse/Root/Course/TCell/CourseDetail_2_Inner_TCell.swift new file mode 100644 index 0000000..ad7cb97 --- /dev/null +++ b/XQMuse/Root/Course/TCell/CourseDetail_2_Inner_TCell.swift @@ -0,0 +1,24 @@ +// +// CourseDetail_2_Inner_TCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/16. +// + +import UIKit +import JQTools + +class CourseDetail_2_Inner_TCell: UITableViewCell { + + @IBOutlet weak var btn_study: UIButton! + override func awakeFromNib() { + super.awakeFromNib() + selectionStyle = .none + } + + @IBAction func studyAction(_ sender: Any) { + let vc = CourseDetialVideoVC() + JQ_currentViewController().jq_push(vc: vc) + } + +} diff --git a/XQMuse/Root/Course/TCell/CourseDetail_2_Inner_TCell.xib b/XQMuse/Root/Course/TCell/CourseDetail_2_Inner_TCell.xib new file mode 100644 index 0000000..4c550c1 --- /dev/null +++ b/XQMuse/Root/Course/TCell/CourseDetail_2_Inner_TCell.xib @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <device id="retina6_12" orientation="portrait" appearance="light"/> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> + <capability name="Safe area layout guides" minToolsVersion="9.0"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_CourseDetail_2_Inner_TCell" rowHeight="106" id="KGk-i7-Jjw" customClass="CourseDetail_2_Inner_TCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="403" height="106"/> + <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="403" height="106"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uL3-AT-OQF"> + <rect key="frame" x="24" y="43.333333333333336" width="7.3333333333333321" height="19.333333333333336"/> + <fontDescription key="fontDescription" type="system" pointSize="16"/> + <color key="textColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="awd-gM-ZRD"> + <rect key="frame" x="52.666666666666671" y="18" width="249.33333333333331" height="17"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="q5a-cH-u74"> + <rect key="frame" x="312" y="17" width="70.666666666666686" height="29"/> + <color key="backgroundColor" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="width" constant="70.5" id="NJh-Q0-nvT"/> + <constraint firstAttribute="height" constant="29" id="jwy-kp-iQ4"/> + </constraints> + <fontDescription key="fontDescription" type="system" 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="14.5"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="studyAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="WCv-9q-rxx"/> + </connections> + </button> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_time" translatesAutoresizingMaskIntoConstraints="NO" id="wpH-E1-rC0"> + <rect key="frame" x="52.666666666666664" y="44" width="11.333333333333336" height="11.666666666666664"/> + <constraints> + <constraint firstAttribute="width" constant="11.5" id="efn-rA-ldt"/> + <constraint firstAttribute="height" constant="11.5" id="hd2-sF-7w1"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bXU-MP-QyS"> + <rect key="frame" x="70.666666666666671" y="42.666666666666664" width="33" height="14"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/> + <color key="textColor" red="0.80392156862745101" green="0.80392156862745101" blue="0.80392156862745101" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_user_1" translatesAutoresizingMaskIntoConstraints="NO" id="oSc-rc-16x"> + <rect key="frame" x="117.66666666666667" y="44" width="11.333333333333329" height="11.666666666666664"/> + <constraints> + <constraint firstAttribute="height" constant="11.5" id="eaV-6e-0Ih"/> + <constraint firstAttribute="width" constant="11.5" id="n0Q-jC-eem"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c0R-vF-UBG"> + <rect key="frame" x="135.66666666666666" y="42.666666666666664" width="33" height="14"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/> + <color key="textColor" red="0.80392156859999997" green="0.80392156859999997" blue="0.80392156859999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3UC-Wb-cQG"> + <rect key="frame" x="21.666666666666657" y="0.0" width="360" height="0.66666666666666663"/> + <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="TWp-MD-4TS"/> + </constraints> + </view> + </subviews> + <constraints> + <constraint firstItem="wpH-E1-rC0" firstAttribute="top" secondItem="awd-gM-ZRD" secondAttribute="bottom" constant="9" id="0Zc-X2-H51"/> + <constraint firstItem="wpH-E1-rC0" firstAttribute="leading" secondItem="awd-gM-ZRD" secondAttribute="leading" id="0wg-uJ-4Np"/> + <constraint firstAttribute="trailing" secondItem="3UC-Wb-cQG" secondAttribute="trailing" constant="21.5" id="1mS-SD-ZJa"/> + <constraint firstItem="oSc-rc-16x" firstAttribute="centerY" secondItem="wpH-E1-rC0" secondAttribute="centerY" id="50x-R4-xTR"/> + <constraint firstItem="oSc-rc-16x" firstAttribute="leading" secondItem="bXU-MP-QyS" secondAttribute="trailing" constant="14" id="ADG-0O-Rvk"/> + <constraint firstItem="3UC-Wb-cQG" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="21.5" id="H2m-u0-Pyd"/> + <constraint firstItem="awd-gM-ZRD" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="52.5" id="JnA-Zo-1fO"/> + <constraint firstItem="c0R-vF-UBG" firstAttribute="centerY" secondItem="wpH-E1-rC0" secondAttribute="centerY" id="JxL-JH-kCT"/> + <constraint firstItem="uL3-AT-OQF" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="24" id="OPx-IH-LD6"/> + <constraint firstAttribute="trailing" secondItem="q5a-cH-u74" secondAttribute="trailing" constant="20.5" id="One-yw-xva"/> + <constraint firstItem="bXU-MP-QyS" firstAttribute="leading" secondItem="wpH-E1-rC0" secondAttribute="trailing" constant="6.5" id="QTP-JI-ZzO"/> + <constraint firstItem="q5a-cH-u74" firstAttribute="leading" secondItem="awd-gM-ZRD" secondAttribute="trailing" constant="10" id="QgM-tO-y5H"/> + <constraint firstItem="c0R-vF-UBG" firstAttribute="leading" secondItem="oSc-rc-16x" secondAttribute="trailing" constant="6.5" id="bIm-0D-Nqo"/> + <constraint firstItem="3UC-Wb-cQG" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="bf7-gf-i6X"/> + <constraint firstItem="bXU-MP-QyS" firstAttribute="centerY" secondItem="wpH-E1-rC0" secondAttribute="centerY" id="eBP-b0-aqj"/> + <constraint firstItem="awd-gM-ZRD" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="18" id="ra5-Wa-c88"/> + <constraint firstItem="q5a-cH-u74" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="17" id="scr-Mv-FTW"/> + <constraint firstItem="uL3-AT-OQF" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="wiC-Us-lKn"/> + <constraint firstItem="c0R-vF-UBG" firstAttribute="centerY" secondItem="oSc-rc-16x" secondAttribute="centerY" id="xdz-Vq-XrJ"/> + </constraints> + </tableViewCellContentView> + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> + <connections> + <outlet property="btn_study" destination="q5a-cH-u74" id="vg6-WV-mdc"/> + </connections> + <point key="canvasLocation" x="148.85496183206106" y="41.549295774647888"/> + </tableViewCell> + </objects> + <resources> + <image name="icon_time" width="11.666666984558105" height="11.666666984558105"/> + <image name="icon_user_1" width="10" height="10.666666984558105"/> + </resources> +</document> diff --git a/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift b/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift new file mode 100644 index 0000000..9a30226 --- /dev/null +++ b/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift @@ -0,0 +1,56 @@ +// +// CourseDetail_2_TCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/16. +// + +import UIKit + +class CourseDetail_2_TCell: UITableViewCell { + + @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var cons_tableHei: NSLayoutConstraint! + +// private(set) var clouse:((IndexPath)->Void)? + + override func awakeFromNib() { + super.awakeFromNib() + backgroundColor = .clear + selectionStyle = .none + tableView.delegate = self + tableView.dataSource = self + tableView.isScrollEnabled = false + tableView.backgroundColor = UIColor(hexString: "f6f6f6") + tableView.separatorStyle = .none + tableView.register(UINib(nibName: "CourseDetail_2_Inner_TCell", bundle: nil), forCellReuseIdentifier: "_CourseDetail_2_Inner_TCell") + cons_tableHei.constant = 70.5 * 5 + } + +// func selectAt(_ clouse:@escaping (IndexPath)->Void){ +// if self.clouse == nil{ +// self.clouse = clouse +// } +// } +} + +extension CourseDetail_2_TCell:UITableViewDelegate & UITableViewDataSource{ + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// clouse?(indexPath) + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 5 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseDetail_2_Inner_TCell", for: indexPath) as! CourseDetail_2_Inner_TCell + cell.backgroundColor = .clear + return cell + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return 70.5 + } +} diff --git a/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.xib b/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.xib new file mode 100644 index 0000000..944af2c --- /dev/null +++ b/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.xib @@ -0,0 +1,55 @@ +<?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"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="279" id="KGk-i7-Jjw" customClass="CourseDetail_2_TCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="395" height="279"/> + <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="395" height="279"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="课程目录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EsS-2x-ooJ"> + <rect key="frame" x="21.666666666666668" y="35" width="61.333333333333329" height="114"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/> + <color key="textColor" red="0.15686274510000001" green="0.15686274510000001" blue="0.15686274510000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="Rxb-3O-BKc"> + <rect key="frame" x="0.0" y="179" width="395" height="100"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="100" id="3OA-Kk-g6l"/> + </constraints> + </tableView> + </subviews> + <constraints> + <constraint firstItem="EsS-2x-ooJ" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="35" id="Hlp-1k-lzl"/> + <constraint firstItem="EsS-2x-ooJ" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="21.5" id="jO0-ZH-hJ9"/> + <constraint firstItem="Rxb-3O-BKc" firstAttribute="top" secondItem="EsS-2x-ooJ" secondAttribute="bottom" constant="30" id="jV2-gZ-CKK"/> + <constraint firstAttribute="bottom" secondItem="Rxb-3O-BKc" secondAttribute="bottom" id="mI0-cL-zMy"/> + <constraint firstAttribute="trailing" secondItem="Rxb-3O-BKc" secondAttribute="trailing" id="uzm-vX-xsu"/> + <constraint firstItem="Rxb-3O-BKc" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="wS8-Bj-4Mf"/> + </constraints> + </tableViewCellContentView> + <connections> + <outlet property="cons_tableHei" destination="3OA-Kk-g6l" id="B2s-Et-Ehh"/> + <outlet property="tableView" destination="Rxb-3O-BKc" id="7KR-ba-eEY"/> + </connections> + <point key="canvasLocation" x="148.85496183206106" y="102.46478873239437"/> + </tableViewCell> + </objects> + <resources> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift b/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift new file mode 100644 index 0000000..4ad3240 --- /dev/null +++ b/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.swift @@ -0,0 +1,55 @@ +// +// CourseDetail_3_TCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/19. +// + +import UIKit +import JQTools + +class CourseDetail_3_TCell: UITableViewCell { + @IBOutlet weak var collectionView: UICollectionView! + @IBOutlet weak var cons_hei: NSLayoutConstraint! + private let CellW = (JQ_ScreenW - 21.5 * 2 - 13.5) / 2 + private let CellH = ((JQ_ScreenW - 21.5 * 2 - 13.5) / 2) * 1.313 + + override func awakeFromNib() { + super.awakeFromNib() + backgroundColor = .clear + selectionStyle = .none + collectionView.backgroundColor = .clear + collectionView.delegate = self + collectionView.dataSource = self + collectionView.isScrollEnabled = false + collectionView.contentInset = UIEdgeInsets(top: 0, left: 21.5, bottom: 0, right: 21.5) + collectionView.register(UINib(nibName: "HomeRelaxBanner_2_CCell", bundle: nil), forCellWithReuseIdentifier: "_HomeRelaxBanner_2_CCell") + + cons_hei.constant = ceil(5.0 / 2.0) * CellH + floor(5.0 / 2.0) * 13.5 + } +} + +extension CourseDetail_3_TCell:UICollectionViewDelegate & UICollectionViewDataSource{ + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 5 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_CCell", for: indexPath) as! HomeRelaxBanner_2_CCell + cell.backgroundColor = .jq_randomColor + return cell + } +} + +extension CourseDetail_3_TCell:UICollectionViewDelegateFlowLayout{ + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 13.5 + } + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 13.5 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: CellW, height: CellH) + } +} diff --git a/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.xib b/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.xib new file mode 100644 index 0000000..acc54db --- /dev/null +++ b/XQMuse/Root/Course/TCell/CourseDetail_3_TCell.xib @@ -0,0 +1,64 @@ +<?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"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_CourseDetail_3_TCell" rowHeight="347" id="KGk-i7-Jjw" customClass="CourseDetail_3_TCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="455" height="347"/> + <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="347"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="相关课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0G9-B5-m4l"> + <rect key="frame" x="21.666666666666668" y="35" width="61.333333333333329" height="14.666666666666664"/> + <constraints> + <constraint firstAttribute="height" constant="14.5" id="COr-dp-lCx"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/> + <color key="textColor" red="0.15686274510000001" green="0.15686274510000001" blue="0.15686274510000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="nEq-ZY-3mu"> + <rect key="frame" x="0.0" y="75.666666666666686" width="455" height="200"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="200" id="YsJ-NH-WUu"/> + </constraints> + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="1sc-XC-5ho"> + <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> + </subviews> + <constraints> + <constraint firstAttribute="trailing" secondItem="nEq-ZY-3mu" secondAttribute="trailing" id="BVg-Jh-pTP"/> + <constraint firstAttribute="bottom" secondItem="nEq-ZY-3mu" secondAttribute="bottom" priority="750" id="HAE-y2-F8d"/> + <constraint firstItem="nEq-ZY-3mu" firstAttribute="top" secondItem="0G9-B5-m4l" secondAttribute="bottom" constant="26" id="HoT-g7-b14"/> + <constraint firstItem="0G9-B5-m4l" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="35" id="b6S-pF-HGc"/> + <constraint firstItem="nEq-ZY-3mu" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="jTh-Jx-7Fk"/> + <constraint firstItem="0G9-B5-m4l" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="21.5" id="ube-k6-sLV"/> + </constraints> + </tableViewCellContentView> + <connections> + <outlet property="collectionView" destination="nEq-ZY-3mu" id="mbu-ON-vFu"/> + <outlet property="cons_hei" destination="YsJ-NH-WUu" id="vYm-tG-6Ho"/> + </connections> + <point key="canvasLocation" x="171.75572519083968" y="96.83098591549296"/> + </tableViewCell> + </objects> + <resources> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Course/TCell/MenuListTCell.swift b/XQMuse/Root/Course/TCell/MenuListTCell.swift new file mode 100644 index 0000000..0f32930 --- /dev/null +++ b/XQMuse/Root/Course/TCell/MenuListTCell.swift @@ -0,0 +1,19 @@ +// +// MenuListTCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/16. +// + +import UIKit + +class MenuListTCell: UITableViewCell { + + @IBOutlet weak var view_line: UIView! + @IBOutlet weak var label_title: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + selectionStyle = .none + } +} diff --git a/XQMuse/Root/Course/TCell/MenuListTCell.xib b/XQMuse/Root/Course/TCell/MenuListTCell.xib new file mode 100644 index 0000000..8e2d606 --- /dev/null +++ b/XQMuse/Root/Course/TCell/MenuListTCell.xib @@ -0,0 +1,54 @@ +<?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="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_MenuListTCell" rowHeight="63" id="KGk-i7-Jjw" customClass="MenuListTCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="294" height="63"/> + <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="294" height="63"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BTu-gK-KIz"> + <rect key="frame" x="0.0" y="23.666666666666671" width="2.6666666666666665" height="15.666666666666664"/> + <color key="backgroundColor" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="width" constant="2.5" id="bjt-4z-odo"/> + <constraint firstAttribute="height" constant="15.5" id="xfz-AE-Xm3"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="1.25"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </view> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xYs-QB-GeD"> + <rect key="frame" x="21" y="23" width="39" height="17"/> + <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="14"/> + <color key="textColor" red="0.54117647059999996" green="0.68235294120000001" blue="0.39607843139999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <constraints> + <constraint firstItem="xYs-QB-GeD" firstAttribute="leading" secondItem="BTu-gK-KIz" secondAttribute="trailing" constant="18.5" id="Imt-xS-zG1"/> + <constraint firstItem="xYs-QB-GeD" firstAttribute="centerY" secondItem="BTu-gK-KIz" secondAttribute="centerY" id="MQR-Mf-AHI"/> + <constraint firstItem="BTu-gK-KIz" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="WTi-Pe-9vh"/> + <constraint firstItem="BTu-gK-KIz" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="o4W-Nr-5Gn"/> + </constraints> + </tableViewCellContentView> + <connections> + <outlet property="label_title" destination="xYs-QB-GeD" id="gab-e7-0xP"/> + <outlet property="view_line" destination="BTu-gK-KIz" id="OEM-Sf-xAZ"/> + </connections> + <point key="canvasLocation" x="61.068702290076331" y="27.112676056338028"/> + </tableViewCell> + </objects> +</document> diff --git a/XQMuse/Root/Course/VC/CourseDetialVC.swift b/XQMuse/Root/Course/VC/CourseDetialVC.swift new file mode 100644 index 0000000..dd0d97e --- /dev/null +++ b/XQMuse/Root/Course/VC/CourseDetialVC.swift @@ -0,0 +1,308 @@ +// +// CourseDetialVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/16. +// + +import UIKit +import JQTools +import SPPageMenu +import QMUIKit + +enum CourseDetialStyle{ + case style1 //有视频 + case style2 //无视频 +} + +class CourseDetialVC: BaseVC { + + private var tableView:UITableView? + private var headerView = CourseDetailHeaderView.jq_loadNibView() + private var barStyle:UIStatusBarStyle = .lightContent + private var scrollShowCell = false + private var currentShowIndex:IndexPath = IndexPath(row: 0, section: 0) + var isAnimationing = false + private var style:CourseDetialStyle = .style1 + + 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: "#F6F6F6") + 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 = UIFont.systemFont(ofSize: 18, weight: .bold) + pageMenu.unSelectedItemTitleFont = UIFont.systemFont(ofSize: 15, weight: .bold) + // 颜色 + pageMenu.selectedItemTitleColor = UIColor(hexStr: "#282828") + pageMenu.unSelectedItemTitleColor = UIColor(hexStr: "#AAAAAA") + return pageMenu + }() + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal) + navigationController?.navigationBar.scrollEdgeAppearance?.backgroundColor = .clear + navigationController?.navigationBar.standardAppearance.backgroundColor = .clear + } + + init(courseSytle:CourseDetialStyle) { + super.init(nibName: nil, bundle: nil) + self.style = courseSytle + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + title = "课程详情" + + if style == .style1{ + pageMenu.setItems(["简介","章节","相关推荐"], selectedItemIndex: 0) + }else{ + pageMenu.setItems(["简介"], selectedItemIndex: 0) + } + } + + override func setUI() { + super.setUI() + + pageMenu.delegate = self + tableView = UITableView(frame: .zero, style: .plain) + tableView!.contentInsetAdjustmentBehavior = .never + tableView!.separatorStyle = .none + tableView!.delegate = self + tableView!.dataSource = self + tableView!.showsVerticalScrollIndicator = false + if #available(iOS 15.0, *) { + tableView!.sectionHeaderTopPadding = 0 + } + tableView!.backgroundColor = UIColor(hexString: "#f6f6f6") + tableView!.register(UINib(nibName: "CourseDetail_1_TCell", bundle: nil), forCellReuseIdentifier: "_CourseDetail_1_TCell") + tableView!.register(UINib(nibName: "CourseDetail_2_TCell", bundle: nil), forCellReuseIdentifier: "_CourseDetail_2_TCell") + tableView!.register(UINib(nibName: "CourseDetail_3_TCell", bundle: nil), forCellReuseIdentifier: "_CourseDetail_3_TCell") + + view.addSubview(tableView!) + tableView!.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + DispatchQueue.main.async { + self.headerView.frame = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: 413) + self.tableView!.tableHeaderView = self.headerView + } + + setFootView() + } + + private func setFootView(){ + let footView = UIView() + footView.backgroundColor = .white + view.addSubview(footView) + footView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.height.equalTo(84) + } + + let giftBtn = QMUIButton(type: .custom) + giftBtn.imagePosition = .left + giftBtn.spacingBetweenImageAndTitle = 7.5 + giftBtn.setTitleColor(UIColor(hexString: "#464646"), for: .normal) + giftBtn.setImage(UIImage(named: "btn_sendGift"), for: .normal) + giftBtn.setTitle("赠送好友", for: .normal) + giftBtn.addTarget(self, action: #selector(sendGift(_:)), for: .touchUpInside) + giftBtn.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .bold) + footView.addSubview(giftBtn) + giftBtn.snp.makeConstraints { make in + make.left.equalTo(26) + make.top.equalTo(26.5) + } + + let studyBtn = QMUIButton(type: .custom) + studyBtn.setTitleColor(UIColor.white, for: .normal) + studyBtn.setTitle(" 立即学习 ", for: .normal) + studyBtn.addTarget(self, action: #selector(handleAction(_:)), for: .touchUpInside) + studyBtn.cornerRadius = 17 + studyBtn.titleLabel?.font = UIFont.systemFont(ofSize: 16.57, weight: .bold) + studyBtn.setBackgroundColor(color: UIColor(hexString: "#8AAE65")!, forState: .normal) + footView.addSubview(studyBtn) + studyBtn.snp.makeConstraints { make in + make.right.equalTo(-20) + make.centerY.equalTo(giftBtn) + make.height.equalTo(34) + } + } + + @objc func handleAction(_ btn:QMUIButton){ + + } + + @objc func sendGift(_ btn:QMUIButton){ + CourseSendGiftView.show { + let vc = PaymentOrderVC() + self.push(vc: vc) + } + } + + override var preferredStatusBarStyle: UIStatusBarStyle{ + return barStyle + } +} + +extension CourseDetialVC:UITableViewDataSource{ + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + if style == .style1{ + return 3 + }else if style == .style2{ + return 1 + }else{ + return 0 + } + } + + func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + if indexPath.row == 0 || indexPath.row == 1{ + return UITableView.automaticDimension + } + return 770.736 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + if indexPath.row == 0{ + let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseDetail_1_TCell") as! CourseDetail_1_TCell + cell.backgroundColor = UIColor(hexString: "#f6f6f6") + return cell + } + + if indexPath.row == 1{ + let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseDetail_2_TCell") as! CourseDetail_2_TCell + cell.backgroundColor = UIColor(hexString: "#f6f6f6") + return cell + } + + if indexPath.row == 2{ + let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseDetail_3_TCell") as! CourseDetail_3_TCell + cell.backgroundColor = UIColor(hexString: "#f6f6f6") + return cell + } + + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") + if cell == nil{ + cell = UITableViewCell(style: .value1, reuseIdentifier: "cell") + } + cell?.backgroundColor = .jq_randomColor + return cell! + } + + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { + var header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "header") + + if header == nil{ + header = UITableViewHeaderFooterView(reuseIdentifier: "header") + header?.addSubview(pageMenu) + pageMenu.snp.makeConstraints { make in + make.edges.equalTo(header!) + } + } + + return header + } + + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + return 73.5 + } +} + +extension CourseDetialVC:UITableViewDelegate{ + + +} + +extension CourseDetialVC:UIScrollViewDelegate{ + + func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) { + isAnimationing = false + } + + func scrollViewDidScroll(_ scrollView: UIScrollView) { + + let v = min(scrollView.contentOffset.y / JQ_NavBarHeight, 1) + navigationController?.navigationBar.standardAppearance.backgroundColor = .white.withAlphaComponent(v) + + if v > 0{ + (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal) + self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor.withAlphaComponent(v),.font:Def_NavFont] + barStyle = .darkContent + + }else{ + (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal) + self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont] + } + + if v == 1{ + barStyle = .darkContent + setNeedsStatusBarAppearanceUpdate() + }else{ + barStyle = .lightContent + setNeedsStatusBarAppearanceUpdate() + } + + if let table = scrollView as? UITableView{ + if v > 0{ + table.contentInset = UIEdgeInsets(top: JQ_NavBarHeight + 9, left: 0, bottom: 118, right: 0) + }else{ + table.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 118, right: 0) + } + } + + + let offSetY = scrollView.contentOffset.y + CGRectGetHeight(scrollView.frame) / 2; + + if let currentIndex = tableView?.indexPathForRow(at: CGPoint(x: 0, y: offSetY)){ + print(scrollView.isDragging) + + if !isAnimationing{ + if currentShowIndex != currentIndex{ + currentShowIndex = currentIndex + pageMenu.selectedItemIndex = currentIndex.row + } + } + } + } +} + +extension CourseDetialVC:SPPageMenuDelegate{ + func pageMenu(_ pageMenu: SPPageMenu, itemSelectedAt index: Int) { + + if currentShowIndex != IndexPath(row: index, section: 0){ + currentShowIndex = IndexPath(row: index, section: 0) + + if !(tableView?.isDragging ?? true){ + isAnimationing = true + tableView?.scrollToRow(at: currentShowIndex, at: .top, animated: true) + } + } + } +} diff --git a/XQMuse/Root/Course/VC/CourseDetialVideoVC.swift b/XQMuse/Root/Course/VC/CourseDetialVideoVC.swift new file mode 100644 index 0000000..ad780b0 --- /dev/null +++ b/XQMuse/Root/Course/VC/CourseDetialVideoVC.swift @@ -0,0 +1,61 @@ +// +// CourseDetialVideoVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/19. +// + +import UIKit + +class CourseDetialVideoVC: BaseVC { + + @IBOutlet weak var tableView: UITableView! + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal) + } + + override func viewDidLoad() { + super.viewDidLoad() + title = "课程详情" + + tableView.separatorStyle = .none + tableView.delegate = self + tableView.dataSource = self + tableView.showsVerticalScrollIndicator = false + if #available(iOS 15.0, *) { + tableView.sectionHeaderTopPadding = 0 + } + tableView.register(UINib(nibName: "CourseDetail_2_Inner_TCell", bundle: nil), forCellReuseIdentifier: "_CourseDetail_2_Inner_TCell") + } + + override var preferredStatusBarStyle: UIStatusBarStyle{ + return .lightContent + } +} + +extension CourseDetialVideoVC:UITableViewDataSource{ + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 10 + } + + func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return 69.5 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseDetail_2_Inner_TCell") as! CourseDetail_2_Inner_TCell + return cell + } +} + +extension CourseDetialVideoVC:UITableViewDelegate{ + + +} diff --git a/XQMuse/Root/Course/VC/CourseDetialVideoVC.xib b/XQMuse/Root/Course/VC/CourseDetialVideoVC.xib new file mode 100644 index 0000000..42b1dc4 --- /dev/null +++ b/XQMuse/Root/Course/VC/CourseDetialVideoVC.xib @@ -0,0 +1,84 @@ +<?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="CourseDetialVideoVC" customModule="XQMuse" customModuleProvider="target"> + <connections> + <outlet property="tableView" destination="9tI-Cr-xM8" id="y8l-vs-uxu"/> + <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> + </connections> + </placeholder> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> + <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a5v-5f-tro"> + <rect key="frame" x="0.0" y="0.0" width="393" height="314.33333333333331"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="demo_bg" translatesAutoresizingMaskIntoConstraints="NO" id="EGK-xl-ywV"> + <rect key="frame" x="0.0" y="0.0" width="393" height="314.33333333333331"/> + </imageView> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="EGK-xl-ywV" secondAttribute="trailing" id="7EB-ci-VAK"/> + <constraint firstItem="EGK-xl-ywV" firstAttribute="top" secondItem="a5v-5f-tro" secondAttribute="top" id="Btv-Ot-ZHF"/> + <constraint firstAttribute="bottom" secondItem="EGK-xl-ywV" secondAttribute="bottom" id="Upc-4k-kA9"/> + <constraint firstAttribute="width" secondItem="a5v-5f-tro" secondAttribute="height" multiplier="1:0.8" id="gMO-7v-G2E"/> + <constraint firstItem="EGK-xl-ywV" firstAttribute="leading" secondItem="a5v-5f-tro" secondAttribute="leading" id="iVr-lI-tV7"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hWZ-tE-Oeu"> + <rect key="frame" x="0.0" y="314.33333333333331" width="393" height="82"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="课程目录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4ak-gq-iBH"> + <rect key="frame" x="20.666666666666668" y="45.666666666666686" width="61.333333333333329" height="18"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/> + <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="height" constant="82" id="HIS-7C-zS3"/> + <constraint firstAttribute="bottom" secondItem="4ak-gq-iBH" secondAttribute="bottom" constant="18.329999999999998" id="cCa-ou-vSq"/> + <constraint firstItem="4ak-gq-iBH" firstAttribute="leading" secondItem="hWZ-tE-Oeu" secondAttribute="leading" constant="20.5" id="qS4-R4-YXE"/> + </constraints> + </view> + <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="9tI-Cr-xM8"> + <rect key="frame" x="0.0" y="396.33333333333326" width="393" height="421.66666666666674"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + </tableView> + </subviews> + <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="hWZ-tE-Oeu" firstAttribute="top" secondItem="a5v-5f-tro" secondAttribute="bottom" id="0GD-ZB-m7D"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="9tI-Cr-xM8" secondAttribute="trailing" id="8Rn-S4-LPe"/> + <constraint firstItem="hWZ-tE-Oeu" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="B44-Pj-deb"/> + <constraint firstItem="9tI-Cr-xM8" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="CZK-sW-wPa"/> + <constraint firstItem="a5v-5f-tro" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="EgI-eU-ICh"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="9tI-Cr-xM8" secondAttribute="bottom" id="GGs-yG-CZR"/> + <constraint firstItem="9tI-Cr-xM8" firstAttribute="top" secondItem="hWZ-tE-Oeu" secondAttribute="bottom" id="U4d-7p-WoM"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="a5v-5f-tro" secondAttribute="trailing" id="WN7-hi-1eN"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="hWZ-tE-Oeu" secondAttribute="trailing" id="iu3-20-0gs"/> + <constraint firstItem="a5v-5f-tro" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="xv8-jD-2j4"/> + </constraints> + <point key="canvasLocation" x="16" y="20"/> + </view> + </objects> + <resources> + <image name="demo_bg" width="621" height="1064"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Course/VC/CourseMenuVC.swift b/XQMuse/Root/Course/VC/CourseMenuVC.swift new file mode 100644 index 0000000..c3ad658 --- /dev/null +++ b/XQMuse/Root/Course/VC/CourseMenuVC.swift @@ -0,0 +1,123 @@ +// +// CourseMenuVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/16. +// + +import UIKit +import JQTools + +class CourseMenuVC: BaseVC { + + private var tableView:UITableView! + private var collectionView:UICollectionView! + private var titleItems = [TitleItem]() + private var selectIndex:Int = 0 + + override func viewDidLoad() { + super.viewDidLoad() + title = "全部课程" + + titleItems.append(TitleItem(title: "会员专区")) + titleItems.append(TitleItem(title: "免费专区")) + titleItems.append(TitleItem(title: "付费专区")) + titleItems.append(TitleItem(title: "线下课程")) + titleItems.append(TitleItem(title: "水晶疗愈")) + } + + override func setUI() { + super.setUI() + view.backgroundColor = UIColor.white + + tableView = UITableView(frame: .zero, style: .plain) + tableView.backgroundColor = UIColor(hexString: "#f6f6f6") + tableView.separatorStyle = .none + tableView.isScrollEnabled = false + tableView.register(UINib(nibName: "MenuListTCell", bundle: nil), forCellReuseIdentifier: "_MenuListTCell") + tableView.delegate = self + tableView.dataSource = self + view.addSubview(tableView) + tableView.snp.makeConstraints { make in + make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top) + make.left.bottom.equalToSuperview() + make.width.equalTo(JQ_ScreenW * 0.2487) + } + + let layout = UICollectionViewFlowLayout() + collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.showsVerticalScrollIndicator = false + collectionView.register(UINib(nibName: "HomeRelaxBanner_2_CCell", bundle: nil), forCellWithReuseIdentifier: "_HomeRelaxBanner_2_CCell") + collectionView.contentInset = UIEdgeInsets(top: 34, left: 21, bottom: 0, right: 21) + view.addSubview(collectionView) + collectionView.snp.makeConstraints { make in + make.left.equalTo(tableView.snp.right) + make.right.equalToSuperview() + make.top.bottom.equalTo(tableView) + } + } +} + +extension CourseMenuVC:UITableViewDelegate & UITableViewDataSource{ + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + selectIndex = indexPath.row + tableView.reloadData() + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "_MenuListTCell", for: indexPath) as! MenuListTCell + cell.backgroundColor = .clear + cell.view_line.isHidden = indexPath.row != selectIndex + cell.label_title.text = titleItems[indexPath.row].title + cell.label_title.textColor = indexPath.row == selectIndex ? UIColor(hexString: "#8AAE65") : UIColor(hexString: "#5C5C5C") + return cell + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return titleItems.count + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return 53 + } +} + +extension CourseMenuVC:UICollectionViewDelegate & UICollectionViewDataSource{ + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + if indexPath.row == 0{ + let vc = CourseDetialVC(courseSytle: .style1) + push(vc: vc) + }else{ + let vc = CourseDetialVC(courseSytle: .style2) + push(vc: vc) + } + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + 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 { + return 2 + } +} + +extension CourseMenuVC:UICollectionViewDelegateFlowLayout{ + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 10 + } + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 10 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + let w = ((JQ_ScreenW - 70) * (1 - 0.2487)) / 2 + return CGSize(width: w, height: w * 1.313) + } +} diff --git a/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift b/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift index 7dec829..69780c5 100644 --- a/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift +++ b/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift @@ -12,12 +12,23 @@ private var collectionView:UICollectionView! private var titleItems = [TitleItem]() + private var subTitleItems = [TitleItem]() override func viewDidLoad() { super.viewDidLoad() titleItems.append(TitleItem(title: "新手冥想指南", subTitle: "Meditation guide")) titleItems.append(TitleItem(title: "推荐课程", subTitle: "与内心的宁静与喜悦入睡")) + + subTitleItems.append(TitleItem(title: "会员专区",coverImage: "course_1")) + subTitleItems.append(TitleItem(title: "免费专区",coverImage: "course_2")) + subTitleItems.append(TitleItem(title: "付费专区",coverImage: "course_3")) + subTitleItems.append(TitleItem(title: "线下课程",coverImage: "course_4")) + subTitleItems.append(TitleItem(title: "疗愈",coverImage: "course_5")) + subTitleItems.append(TitleItem(title: "关系",coverImage: "course_6")) + subTitleItems.append(TitleItem(title: "财富",coverImage: "course_7")) + subTitleItems.append(TitleItem(title: "分类",coverImage: "course_8")) + } override func setUI() { @@ -41,6 +52,11 @@ extension CourseVCOfficalCommentVC:UICollectionViewDelegate & UICollectionViewDataSource{ + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let vc = CourseDetialVC(courseSytle: .style1) + JQ_currentViewController().jq_push(vc: vc) + } + func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { if kind == UICollectionView.elementKindSectionHeader{ @@ -56,7 +72,12 @@ if indexPath.section == 0{ let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_CourseOfficalCommendTopCCell", for: indexPath) as! CourseOfficalCommendTopCCell - cell.backgroundColor = .jq_randomColor + cell.setTitles(subTitleItems) + cell.clickAtClouse { index in + let vc = CourseMenuVC() + vc.hidesBottomBarWhenPushed = true + JQ_currentNavigationController().pushViewController(vc, animated: true) + } return cell } @@ -80,7 +101,9 @@ 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 h = ceil(subTitleItems.count.double / 4.0) * 101.25 + floor(subTitleItems.count.double / 4.0) * 5 + 208.5 + return CGSize(width: JQ_ScreenW, height: h) } let w = (JQ_ScreenW - 19 * 2 - 14) / 2 diff --git a/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift b/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift index d258bb4..e0a5563 100644 --- a/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift +++ b/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift @@ -9,22 +9,86 @@ import JQTools class CourseVCTeacherSpecialVC: BaseVC { + private var tableView:UITableView? + private var headerView:VideoView! override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .jq_randomColor } - - /* - // MARK: - Navigation + override func setUI() { + super.setUI() + tableView = UITableView(frame: .zero, style: .plain) + tableView!.contentInsetAdjustmentBehavior = .never + tableView!.separatorStyle = .none + tableView!.delegate = self + tableView!.dataSource = self + tableView?.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 20, right: 0) + tableView!.showsVerticalScrollIndicator = false + if #available(iOS 15.0, *) { + tableView!.sectionHeaderTopPadding = 0 + } + tableView!.backgroundColor = UIColor(hexString: "#f6f6f6") + tableView!.register(UINib(nibName: "CourseDetail_1_TCell", bundle: nil), forCellReuseIdentifier: "_CourseDetail_1_TCell") + tableView!.register(UINib(nibName: "CourseDetail_3_TCell", bundle: nil), forCellReuseIdentifier: "_CourseDetail_3_TCell") - // 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. - } - */ + view.addSubview(tableView!) + tableView!.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + DispatchQueue.main.async { + self.headerView = VideoView() + self.headerView.frame = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: JQ_ScreenW * 0.56) + self.tableView!.tableHeaderView = self.headerView + } + } +} +extension CourseVCTeacherSpecialVC:UITableViewDataSource{ + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 2 + } + + func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + if indexPath.row == 0 || indexPath.row == 1{ + return UITableView.automaticDimension + } + return 770.736 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + if indexPath.row == 0{ + let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseDetail_1_TCell") as! CourseDetail_1_TCell + cell.backgroundColor = UIColor(hexString: "#f6f6f6") + cell.setContent(title: "导师简介", content: "") + return cell + } + + if indexPath.row == 1{ + let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseDetail_3_TCell") as! CourseDetail_3_TCell + cell.backgroundColor = UIColor(hexString: "#f6f6f6") + return cell + } + + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") + if cell == nil{ + cell = UITableViewCell(style: .value1, reuseIdentifier: "cell") + } + return cell! + } + + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + return 73.5 + } +} + +extension CourseVCTeacherSpecialVC:UITableViewDelegate{ + } diff --git a/XQMuse/Root/Course/View/CourseDetailHeaderView.swift b/XQMuse/Root/Course/View/CourseDetailHeaderView.swift new file mode 100644 index 0000000..cfc13c3 --- /dev/null +++ b/XQMuse/Root/Course/View/CourseDetailHeaderView.swift @@ -0,0 +1,17 @@ +// +// CourseDetailHeaderView.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/16. +// + +import UIKit +import JQTools + +class CourseDetailHeaderView: UIView,JQNibView{ + + @IBOutlet weak var icon: UIImageView! + override func awakeFromNib() { + super.awakeFromNib() + } +} diff --git a/XQMuse/Root/Course/View/CourseDetailHeaderView.xib b/XQMuse/Root/Course/View/CourseDetailHeaderView.xib new file mode 100644 index 0000000..e8b97cb --- /dev/null +++ b/XQMuse/Root/Course/View/CourseDetailHeaderView.xib @@ -0,0 +1,90 @@ +<?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="CourseDetailHeaderView" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="364" height="413"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="demo_bg" translatesAutoresizingMaskIntoConstraints="NO" id="3FR-3L-eGU"> + <rect key="frame" x="0.0" y="0.0" width="364" height="291.33333333333331"/> + <constraints> + <constraint firstAttribute="width" secondItem="3FR-3L-eGU" secondAttribute="height" multiplier="1:0.8" id="dKc-G0-qUl"/> + </constraints> + </imageView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AMf-zP-hoy"> + <rect key="frame" x="0.0" y="291.33333333333331" width="364" height="99.333333333333314"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CgZ-Jh-uGm"> + <rect key="frame" x="20.666666666666664" y="20" width="17.666666666666664" height="23"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="19"/> + <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="导师 --" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DbG-SW-sik"> + <rect key="frame" x="304.33333333333331" y="24.333333333333371" width="39.333333333333314" height="14.333333333333336"/> + <fontDescription key="fontDescription" type="system" pointSize="12"/> + <color key="textColor" red="0.27058823529411763" green="0.27058823529411763" blue="0.27058823529411763" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_use_small" translatesAutoresizingMaskIntoConstraints="NO" id="QZb-OD-zkm"> + <rect key="frame" x="20.666666666666668" y="63.333333333333364" width="10" height="10.666666666666664"/> + <constraints> + <constraint firstAttribute="width" constant="10" id="Oim-LL-682"/> + <constraint firstAttribute="height" constant="10.5" id="UW0-AR-Xhg"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="101人已加入学习" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0I9-CV-ojJ"> + <rect key="frame" x="35.666666666666664" y="62.666666666666686" width="78.666666666666686" height="12"/> + <fontDescription key="fontDescription" type="system" pointSize="10"/> + <color key="textColor" red="0.80392156862745101" green="0.80392156862745101" blue="0.80392156862745101" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + <constraints> + <constraint firstItem="QZb-OD-zkm" firstAttribute="leading" secondItem="CgZ-Jh-uGm" secondAttribute="leading" id="9m2-IA-FFN"/> + <constraint firstAttribute="height" constant="99.5" id="LcG-qp-bba"/> + <constraint firstAttribute="trailing" secondItem="DbG-SW-sik" secondAttribute="trailing" constant="20.5" id="dRM-2S-Gf9"/> + <constraint firstItem="0I9-CV-ojJ" firstAttribute="leading" secondItem="QZb-OD-zkm" secondAttribute="trailing" constant="5" id="e2U-HD-qip"/> + <constraint firstItem="CgZ-Jh-uGm" firstAttribute="top" secondItem="AMf-zP-hoy" secondAttribute="top" constant="20" id="f9p-jH-KwJ"/> + <constraint firstItem="CgZ-Jh-uGm" firstAttribute="leading" secondItem="AMf-zP-hoy" secondAttribute="leading" constant="20.5" id="fzO-TU-hyZ"/> + <constraint firstItem="QZb-OD-zkm" firstAttribute="top" secondItem="CgZ-Jh-uGm" secondAttribute="bottom" constant="20.5" id="iWI-lW-jIf"/> + <constraint firstItem="QZb-OD-zkm" firstAttribute="centerY" secondItem="0I9-CV-ojJ" secondAttribute="centerY" id="pCH-gF-id3"/> + <constraint firstItem="DbG-SW-sik" firstAttribute="centerY" secondItem="CgZ-Jh-uGm" secondAttribute="centerY" id="rIW-tx-0kQ"/> + </constraints> + </view> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="AMf-zP-hoy" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="5hu-fm-fpJ"/> + <constraint firstItem="AMf-zP-hoy" firstAttribute="top" secondItem="3FR-3L-eGU" secondAttribute="bottom" id="HCP-1R-mx8"/> + <constraint firstAttribute="trailing" secondItem="3FR-3L-eGU" secondAttribute="trailing" id="KJx-ha-rYc"/> + <constraint firstItem="3FR-3L-eGU" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="KjP-Qt-mZS"/> + <constraint firstAttribute="trailing" secondItem="AMf-zP-hoy" secondAttribute="trailing" id="QnO-1B-SP7"/> + <constraint firstAttribute="bottom" secondItem="AMf-zP-hoy" secondAttribute="bottom" priority="750" id="TyS-Df-byM"/> + <constraint firstItem="3FR-3L-eGU" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="fEh-oE-o3e"/> + </constraints> + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> + <connections> + <outlet property="icon" destination="QZb-OD-zkm" id="C8w-ga-BSc"/> + </connections> + <point key="canvasLocation" x="59.541984732824424" y="-98.239436619718319"/> + </view> + </objects> + <resources> + <image name="demo_bg" width="621" height="1064"/> + <image name="icon_use_small" width="10" height="10.666666984558105"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Course/View/CourseSendGiftView.swift b/XQMuse/Root/Course/View/CourseSendGiftView.swift new file mode 100644 index 0000000..c1b9fc4 --- /dev/null +++ b/XQMuse/Root/Course/View/CourseSendGiftView.swift @@ -0,0 +1,63 @@ +// +// CourseSendGiftView.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/19. +// + +import UIKit +import JQTools + +class CourseSendGiftView: UIView,JQNibView{ + + @IBOutlet weak var btn_complete: UIButton! + @IBOutlet weak var view_container: UIView! + @IBOutlet weak var label_price: UILabel! + @IBOutlet weak var cons_bottom: NSLayoutConstraint! + + private var clouse:(()->Void)? + + override func awakeFromNib() { + super.awakeFromNib() + cons_bottom.constant = -JQ_ScreenW + alpha = 0 + layoutIfNeeded() + } + + static func show(_ clouse:@escaping()->Void){ + let view = CourseSendGiftView.jq_loadNibView() + sceneDelegate?.window?.addSubview(view) + view.clouse = clouse + view.cons_bottom.constant = 0 + UIView.animate(withDuration: 0.4) { + view.alpha = 1 + view.layoutIfNeeded() + } + } + + override func layoutSubviews() { + super.layoutSubviews() + btn_complete.jq_gradientNibColor(colorArr: [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 18.5) + } + + @IBAction func completeAction(_ sender: UIButton) { + cons_bottom.constant = -JQ_ScreenW + UIView.animate(withDuration: 0.4) { + self.alpha = 0 + self.layoutIfNeeded() + }completion: { _ in + self.removeFromSuperview() + self.clouse?() + } + } + + @IBAction func cancelAction(_ sender: UIButton) { + cons_bottom.constant = -JQ_ScreenW + UIView.animate(withDuration: 0.4) { + self.alpha = 0 + self.layoutIfNeeded() + }completion: { _ in + self.removeFromSuperview() + } + } +} diff --git a/XQMuse/Root/Course/View/CourseSendGiftView.xib b/XQMuse/Root/Course/View/CourseSendGiftView.xib new file mode 100644 index 0000000..af8c539 --- /dev/null +++ b/XQMuse/Root/Course/View/CourseSendGiftView.xib @@ -0,0 +1,111 @@ +<?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="CourseSendGiftView" 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="LSz-KU-Ren"> + <rect key="frame" x="0.0" y="627" width="393" height="225"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Sfd-UT-Jfh"> + <rect key="frame" x="46" y="143" width="301" height="40"/> + <color key="backgroundColor" red="0.55686274509803924" green="0.64313725490196072" blue="0.47843137254901957" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="40" id="Ch4-AT-SzS"/> + </constraints> + <fontDescription key="fontDescription" type="system" weight="medium" 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="20"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="completeAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="0Cz-q8-Gw1"/> + </connections> + </button> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WjL-9e-RTJ"> + <rect key="frame" x="0.0" y="123.66666666666663" width="393" height="0.3333333333333286"/> + <color key="backgroundColor" red="0.85882352941176465" green="0.85882352941176465" blue="0.90588235294117647" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="0.5" id="OvQ-aG-Ja5"/> + </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="50e-Zj-0x8"> + <rect key="frame" x="14" y="78.666666666666629" width="64.666666666666671" height="20"/> + <constraints> + <constraint firstAttribute="height" constant="20" id="G5z-ZX-Ecd"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Nxc-CP-MV1"> + <rect key="frame" x="360.66666666666669" y="80" width="18.333333333333314" height="17"/> + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/> + <color key="textColor" red="0.9882352941176471" green="0.64313725490196072" blue="0.19607843137254902" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="Sfd-UT-Jfh" firstAttribute="top" secondItem="WjL-9e-RTJ" secondAttribute="bottom" constant="19" id="2UU-eT-y0g"/> + <constraint firstItem="Nxc-CP-MV1" firstAttribute="centerY" secondItem="50e-Zj-0x8" secondAttribute="centerY" id="3wu-c9-16a"/> + <constraint firstItem="WjL-9e-RTJ" firstAttribute="leading" secondItem="LSz-KU-Ren" secondAttribute="leading" id="E7P-CV-pEk"/> + <constraint firstItem="50e-Zj-0x8" firstAttribute="leading" secondItem="LSz-KU-Ren" secondAttribute="leading" constant="14" id="FWa-Fg-onc"/> + <constraint firstAttribute="trailing" secondItem="WjL-9e-RTJ" secondAttribute="trailing" id="Rfg-tw-AYT"/> + <constraint firstAttribute="bottomMargin" secondItem="Sfd-UT-Jfh" secondAttribute="bottom" id="RyI-07-ePU"/> + <constraint firstAttribute="trailing" secondItem="Sfd-UT-Jfh" secondAttribute="trailing" constant="46" id="U4s-iM-S4p"/> + <constraint firstAttribute="height" constant="225" id="hnP-qJ-dUE"/> + <constraint firstAttribute="trailing" secondItem="Nxc-CP-MV1" secondAttribute="trailing" constant="14" id="yj2-7F-xFu"/> + <constraint firstItem="Sfd-UT-Jfh" firstAttribute="leading" secondItem="LSz-KU-Ren" secondAttribute="leading" constant="46" id="z5v-ab-pXi"/> + <constraint firstItem="WjL-9e-RTJ" firstAttribute="top" secondItem="50e-Zj-0x8" secondAttribute="bottom" constant="25" id="zqO-9k-JpZ"/> + </constraints> + </view> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="acJ-rr-fZR"> + <rect key="frame" x="0.0" y="59" width="393" height="568"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <connections> + <action selector="cancelAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="NSN-uQ-AAg"/> + </connections> + </button> + </subviews> + <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstItem="LSz-KU-Ren" firstAttribute="top" secondItem="acJ-rr-fZR" secondAttribute="bottom" id="4cT-Jd-k1O"/> + <constraint firstItem="LSz-KU-Ren" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="dwp-pW-dJ7"/> + <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="acJ-rr-fZR" secondAttribute="trailing" id="fWv-3E-E9t"/> + <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="LSz-KU-Ren" secondAttribute="trailing" id="hF4-yw-8v4"/> + <constraint firstAttribute="bottom" secondItem="LSz-KU-Ren" secondAttribute="bottom" id="pK1-DH-wy4"/> + <constraint firstItem="acJ-rr-fZR" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="v1B-0R-Pf3"/> + <constraint firstItem="acJ-rr-fZR" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" id="xKT-Pc-D7t"/> + </constraints> + <connections> + <outlet property="btn_complete" destination="Sfd-UT-Jfh" id="BPN-tH-M8e"/> + <outlet property="cons_bottom" destination="pK1-DH-wy4" id="QEE-cE-Vye"/> + <outlet property="label_price" destination="Nxc-CP-MV1" id="2th-Tq-1Xv"/> + <outlet property="view_container" destination="LSz-KU-Ren" id="Hqz-Fe-kp0"/> + </connections> + <point key="canvasLocation" x="14.503816793893129" y="19.718309859154932"/> + </view> + </objects> + <resources> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Home/HomeVC.swift b/XQMuse/Root/Home/HomeVC.swift index dfe8316..7f0097f 100644 --- a/XQMuse/Root/Home/HomeVC.swift +++ b/XQMuse/Root/Home/HomeVC.swift @@ -12,6 +12,7 @@ var title = "" var subTitle = "" var hasMore:Bool = false + var coverImage:String? } class HomeVC: BaseVC { diff --git a/XQMuse/Root/Other/View/VideoView.swift b/XQMuse/Root/Other/View/VideoView.swift new file mode 100644 index 0000000..1122ef3 --- /dev/null +++ b/XQMuse/Root/Other/View/VideoView.swift @@ -0,0 +1,22 @@ +// +// VoiceView.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/19. +// + +import UIKit +import JQTools + +class VideoView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .jq_randomColor + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git a/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift b/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift new file mode 100644 index 0000000..4d36f15 --- /dev/null +++ b/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift @@ -0,0 +1,17 @@ +// +// PavilionItemCell.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/19. +// + +import UIKit + +class PavilionItemCell: UICollectionViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + + } + +} diff --git a/XQMuse/Root/Pavilion/CCell/PavilionItemCell.xib b/XQMuse/Root/Pavilion/CCell/PavilionItemCell.xib new file mode 100644 index 0000000..35ab45a --- /dev/null +++ b/XQMuse/Root/Pavilion/CCell/PavilionItemCell.xib @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <device id="retina6_12" orientation="portrait" appearance="light"/> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> + <capability name="Safe area layout guides" minToolsVersion="9.0"/> + <capability name="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="_PavilionItemCell" id="gTV-IL-0wX" customClass="PavilionItemCell" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="233" height="337"/> + <autoresizingMask key="autoresizingMask"/> + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> + <rect key="frame" x="0.0" y="0.0" width="233" height="337"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="LoX-Q1-cyl"> + <rect key="frame" x="5.6666666666666714" y="5.6666666666666714" width="222" height="173.33333333333331"/> + <constraints> + <constraint firstAttribute="width" secondItem="LoX-Q1-cyl" secondAttribute="height" multiplier="1:0.7822" id="32J-aw-3d5"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="10"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </imageView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BbC-q1-W3U"> + <rect key="frame" x="176.33333333333334" y="14" width="42.333333333333343" height="13"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="距你0km" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XAi-il-afI"> + <rect key="frame" x="5.9999999999999982" y="3" width="30.333333333333329" height="7"/> + <fontDescription key="fontDescription" type="system" pointSize="7"/> + <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="XAi-il-afI" secondAttribute="trailing" constant="6" id="p5B-Bt-kkF"/> + <constraint firstItem="XAi-il-afI" firstAttribute="leading" secondItem="BbC-q1-W3U" secondAttribute="leading" constant="6" id="qWE-hu-Gof"/> + <constraint firstAttribute="height" constant="13" id="qfv-yR-XjE"/> + <constraint firstAttribute="bottom" secondItem="XAi-il-afI" secondAttribute="bottom" constant="3" id="rnJ-cu-ove"/> + <constraint firstItem="XAi-il-afI" firstAttribute="top" secondItem="BbC-q1-W3U" secondAttribute="top" constant="3" id="yQc-e7-Hyw"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="6.5"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </view> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xE9-lZ-06u"> + <rect key="frame" x="15" y="194" width="203" height="15.666666666666657"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/> + <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_local" translatesAutoresizingMaskIntoConstraints="NO" id="Mdg-Ka-kmF"> + <rect key="frame" x="15" y="222.33333333333334" width="8" height="10"/> + <constraints> + <constraint firstAttribute="height" constant="10" id="0ig-xy-gm1"/> + <constraint firstAttribute="width" constant="8" id="Yc8-PA-tQC"/> + </constraints> + </imageView> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_phone" translatesAutoresizingMaskIntoConstraints="NO" id="YoC-3O-9D8"> + <rect key="frame" x="15" y="238.33333333333334" width="8.6666666666666643" height="8.3333333333333428"/> + <constraints> + <constraint firstAttribute="width" constant="8.5" id="G3j-1r-zaW"/> + <constraint firstAttribute="height" constant="8.5" id="ySL-OJ-TRU"/> + </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="Yck-TZ-33e"> + <rect key="frame" x="28" y="222.33333333333334" width="200" height="9.6666666666666572"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="8"/> + <color key="textColor" red="0.33725490196078434" green="0.33725490196078434" blue="0.33725490196078434" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ig6-yP-XKK"> + <rect key="frame" x="28.666666666666671" y="237.66666666666666" width="22" height="9.6666666666666572"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="8"/> + <color key="textColor" red="0.33725490200000002" green="0.33725490200000002" blue="0.33725490200000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + </view> + <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> + <constraints> + <constraint firstItem="Yck-TZ-33e" firstAttribute="leading" secondItem="Mdg-Ka-kmF" secondAttribute="trailing" constant="5" id="03Z-wu-01o"/> + <constraint firstAttribute="trailing" secondItem="xE9-lZ-06u" secondAttribute="trailing" constant="15" id="1kY-DQ-Phl"/> + <constraint firstItem="YoC-3O-9D8" firstAttribute="centerY" secondItem="Ig6-yP-XKK" secondAttribute="centerY" id="9kA-1M-wyQ"/> + <constraint firstItem="Mdg-Ka-kmF" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="15" id="9xt-cg-4MP"/> + <constraint firstItem="YoC-3O-9D8" firstAttribute="leading" secondItem="Mdg-Ka-kmF" secondAttribute="leading" id="Dye-2Q-pu5"/> + <constraint firstAttribute="trailing" secondItem="BbC-q1-W3U" secondAttribute="trailing" constant="14.5" id="RmE-Go-5pC"/> + <constraint firstItem="YoC-3O-9D8" firstAttribute="top" secondItem="Mdg-Ka-kmF" secondAttribute="bottom" constant="6" id="UOh-W8-U3y"/> + <constraint firstItem="Mdg-Ka-kmF" firstAttribute="centerY" secondItem="Yck-TZ-33e" secondAttribute="centerY" id="VYP-Jc-YgA"/> + <constraint firstItem="LoX-Q1-cyl" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="5.5" id="ca0-yW-lIs"/> + <constraint firstAttribute="trailing" secondItem="Yck-TZ-33e" secondAttribute="trailing" constant="5" id="jWj-9I-o8E"/> + <constraint firstItem="xE9-lZ-06u" firstAttribute="top" secondItem="LoX-Q1-cyl" secondAttribute="bottom" constant="15" id="jvA-zt-t78"/> + <constraint firstItem="Ig6-yP-XKK" firstAttribute="leading" secondItem="YoC-3O-9D8" secondAttribute="trailing" constant="5" id="paX-bY-tAA"/> + <constraint firstItem="LoX-Q1-cyl" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="5.5" id="qrh-uT-bAw"/> + <constraint firstItem="BbC-q1-W3U" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="14" id="rwk-JY-hvm"/> + <constraint firstItem="Mdg-Ka-kmF" firstAttribute="top" secondItem="xE9-lZ-06u" secondAttribute="bottom" constant="12.5" id="tys-k5-Nad"/> + <constraint firstAttribute="trailing" secondItem="LoX-Q1-cyl" secondAttribute="trailing" constant="5.5" id="xVq-Xx-rKg"/> + <constraint firstItem="xE9-lZ-06u" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="15" id="yl4-HG-eHc"/> + </constraints> + <size key="customSize" width="233" height="337"/> + <point key="canvasLocation" x="156.4885496183206" y="120.77464788732395"/> + </collectionViewCell> + </objects> + <resources> + <image name="icon_local" width="8" height="10"/> + <image name="icon_phone" width="8.6666669845581055" height="8.6666669845581055"/> + </resources> +</document> diff --git a/XQMuse/Root/Pavilion/PavilionVC.swift b/XQMuse/Root/Pavilion/PavilionVC.swift index bf5f423..f8b5ccf 100644 --- a/XQMuse/Root/Pavilion/PavilionVC.swift +++ b/XQMuse/Root/Pavilion/PavilionVC.swift @@ -6,24 +6,79 @@ // import UIKit +import JQTools class PavilionVC: BaseVC { - + @IBOutlet weak var collectionView: UICollectionView! + override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view. } - - /* - // MARK: - Navigation + override func setUI() { + super.setUI() + view.backgroundColor = UIColor(hexString: "#f6f6f6") + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = false + collectionView.backgroundColor = .clear + collectionView.contentInset = UIEdgeInsets(top: 0, left: 28.5, bottom: 0, right: 28.5) + collectionView.register(UINib(nibName: "PavilionItemCell", bundle: nil), forCellWithReuseIdentifier: "_PavilionItemCell") + } - // 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. - } - */ + @IBAction func searchAction(_ sender: Any) { + let searchVC = PavilionSearchVC() + push(vc: searchVC) + } + } + +extension PavilionVC:UICollectionViewDelegate{ + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let detailVC = PavilionDetailVC() + push(vc: detailVC) + } +} + +extension PavilionVC:UICollectionViewDataSource{ + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_PavilionItemCell", for: indexPath) as! PavilionItemCell + cell.backgroundColor = .jq_randomColor + cell.jq_cornerRadius = 16 + return cell + + } + + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 10 + } +} + +extension PavilionVC:UICollectionViewDelegateFlowLayout{ + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 25.5 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 19 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + let w = (JQ_ScreenW - 28.5 * 2 - 19) / 2.0 + let h = w * 1.2681 + return CGSizeMake(w, h) + } +} + +//extension PavilionVC:UITextFieldDelegate{ +// func textFieldShouldReturn(_ textField: UITextField) -> Bool { +// textField.endEditing(true) +// +// return true +// } +//} diff --git a/XQMuse/Root/Pavilion/PavilionVC.xib b/XQMuse/Root/Pavilion/PavilionVC.xib new file mode 100644 index 0000000..513fbb5 --- /dev/null +++ b/XQMuse/Root/Pavilion/PavilionVC.xib @@ -0,0 +1,109 @@ +<?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="PavilionVC" customModule="XQMuse" customModuleProvider="target"> + <connections> + <outlet property="collectionView" destination="cjl-Fc-U1i" id="Blo-Vw-cm2"/> + <outlet property="view" destination="iN0-l3-epB" id="TNR-nf-b4z"/> + </connections> + </placeholder> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view contentMode="scaleToFill" id="iN0-l3-epB"> + <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X4g-Ky-JIp"> + <rect key="frame" x="0.0" y="0.0" width="393" height="353.66666666666669"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_pavilion_top" translatesAutoresizingMaskIntoConstraints="NO" id="9FL-8Y-YIj"> + <rect key="frame" x="0.0" y="0.0" width="393" height="353.66666666666669"/> + </imageView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LKK-7W-RbW" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> + <rect key="frame" x="34.666666666666657" y="197.33333333333334" width="324" height="49"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_search" translatesAutoresizingMaskIntoConstraints="NO" id="Mwd-c6-yJX"> + <rect key="frame" x="34.000000000000007" y="13.333333333333314" width="22.333333333333336" height="22"/> + <constraints> + <constraint firstAttribute="height" constant="22" id="eN4-iT-cyW"/> + <constraint firstAttribute="width" constant="22.5" id="oGb-Nq-91g"/> + </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="6ui-UR-dzc"> + <rect key="frame" x="68" y="17.333333333333314" width="110.33333333333331" height="14.333333333333336"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> + <color key="textColor" red="0.87058823529411766" green="0.87058823529411766" blue="0.87058823529411766" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="Mwd-c6-yJX" firstAttribute="centerY" secondItem="LKK-7W-RbW" secondAttribute="centerY" id="Uad-y4-m42"/> + <constraint firstAttribute="height" constant="49" id="bjS-vd-uNd"/> + <constraint firstItem="Mwd-c6-yJX" firstAttribute="leading" secondItem="LKK-7W-RbW" secondAttribute="leading" constant="34" id="ctO-99-kI6"/> + <constraint firstItem="6ui-UR-dzc" firstAttribute="leading" secondItem="Mwd-c6-yJX" secondAttribute="trailing" constant="11.5" id="iV1-ou-gTm"/> + <constraint firstItem="6ui-UR-dzc" firstAttribute="centerY" secondItem="Mwd-c6-yJX" secondAttribute="centerY" id="jYK-Cs-afh"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="24.5"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="searchAction:" destination="-1" eventType="touchUpInside" id="x6w-fc-zXP"/> + </connections> + </view> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="LKK-7W-RbW" secondAttribute="trailing" constant="34.5" id="5cq-Vm-olB"/> + <constraint firstItem="9FL-8Y-YIj" firstAttribute="top" secondItem="X4g-Ky-JIp" secondAttribute="top" id="EDn-2y-dxo"/> + <constraint firstAttribute="bottom" secondItem="9FL-8Y-YIj" secondAttribute="bottom" id="LDZ-VX-EJY"/> + <constraint firstItem="9FL-8Y-YIj" firstAttribute="leading" secondItem="X4g-Ky-JIp" secondAttribute="leading" id="Qmc-bN-2Sg"/> + <constraint firstAttribute="bottom" secondItem="LKK-7W-RbW" secondAttribute="bottom" constant="107.5" id="Tht-0C-0IE"/> + <constraint firstAttribute="width" secondItem="X4g-Ky-JIp" secondAttribute="height" multiplier="1:0.9" id="hvu-kM-wlK"/> + <constraint firstAttribute="trailing" secondItem="9FL-8Y-YIj" secondAttribute="trailing" id="u4u-po-7lT"/> + <constraint firstItem="LKK-7W-RbW" firstAttribute="leading" secondItem="X4g-Ky-JIp" secondAttribute="leading" constant="34.5" id="zT6-NZ-sT4"/> + </constraints> + </view> + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="cjl-Fc-U1i"> + <rect key="frame" x="0.0" y="301.33333333333331" width="393" height="516.66666666666674"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="b8V-X4-f6k"> + <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> + </subviews> + <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="cjl-Fc-U1i" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="Di6-35-KpK"/> + <constraint firstItem="X4g-Ky-JIp" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="Dps-1n-L79"/> + <constraint firstItem="X4g-Ky-JIp" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="PZU-6m-kVv"/> + <constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="cjl-Fc-U1i" secondAttribute="bottom" id="TDO-TE-7xi"/> + <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="cjl-Fc-U1i" secondAttribute="trailing" id="TNn-sQ-vVu"/> + <constraint firstItem="cjl-Fc-U1i" firstAttribute="top" secondItem="X4g-Ky-JIp" secondAttribute="bottom" constant="-52.5" id="lcy-0i-Wi9"/> + <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="X4g-Ky-JIp" secondAttribute="trailing" id="xr8-4F-iZy"/> + </constraints> + <point key="canvasLocation" x="14.503816793893129" y="19.718309859154932"/> + </view> + </objects> + <resources> + <image name="bg_pavilion_top" width="393.66665649414062" height="352.66665649414062"/> + <image name="icon_search" width="22.666666030883789" height="22"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift b/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift new file mode 100644 index 0000000..707b0d0 --- /dev/null +++ b/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift @@ -0,0 +1,36 @@ +// +// PavilionDetailVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/19. +// + +import UIKit +import JQTools +import WebKit + +class PavilionDetailVC: BaseVC { + + @IBOutlet weak var scrollView: UIScrollView! + @IBOutlet weak var webView: WKWebView! + @IBOutlet weak var view_bannerBg: UIView! + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal) + } + + override func viewDidLoad() { + super.viewDidLoad() + title = "疗愈馆详情" + scrollView.contentInsetAdjustmentBehavior = .never + view_bannerBg.backgroundColor = .jq_randomColor + webView.scrollView.isScrollEnabled = false + } + + + override var preferredStatusBarStyle: UIStatusBarStyle{ + return .lightContent + } + +} diff --git a/XQMuse/Root/Pavilion/VC/PavilionDetailVC.xib b/XQMuse/Root/Pavilion/VC/PavilionDetailVC.xib new file mode 100644 index 0000000..3234385 --- /dev/null +++ b/XQMuse/Root/Pavilion/VC/PavilionDetailVC.xib @@ -0,0 +1,226 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <device id="retina6_12" orientation="portrait" appearance="light"/> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> + <capability name="System colors in document resources" minToolsVersion="11.0"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PavilionDetailVC" customModule="XQMuse" customModuleProvider="target"> + <connections> + <outlet property="scrollView" destination="yya-lM-LKe" id="3Mj-Nj-oHg"/> + <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> + <outlet property="view_bannerBg" destination="bRv-iS-Gxa" id="Crd-Q4-llL"/> + <outlet property="webView" destination="IFs-PA-QBm" id="Xna-he-6OO"/> + </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="yya-lM-LKe"> + <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SvO-06-u0I"> + <rect key="frame" x="0.0" y="0.0" width="393" height="758.33333333333337"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bRv-iS-Gxa"> + <rect key="frame" x="0.0" y="0.0" width="393" height="314.33333333333331"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="width" secondItem="bRv-iS-Gxa" secondAttribute="height" multiplier="1:0.8" id="AkY-bQ-ulu"/> + </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="ej2-gY-nmo"> + <rect key="frame" x="26.666666666666671" y="346" width="102.00000000000001" height="24"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/> + <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="Xin quan" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mof-4V-8Cf"> + <rect key="frame" x="324.33333333333331" y="352" width="42.333333333333314" height="12"/> + <fontDescription key="fontDescription" type="system" pointSize="10"/> + <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eFG-qF-ock"> + <rect key="frame" x="27" y="380.33333333333331" width="339" height="0.66666666666668561"/> + <color key="backgroundColor" red="0.33725490196078434" green="0.33725490196078434" blue="0.33725490196078434" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="0.5" id="7i3-Et-x8a"/> + </constraints> + </view> + <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="6.5" translatesAutoresizingMaskIntoConstraints="NO" id="ied-2M-OzN"> + <rect key="frame" x="28" y="393" width="240" height="47.666666666666686"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="O2C-vA-cCo"> + <rect key="frame" x="0.0" y="0.0" width="240" height="11.333333333333334"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_phone" translatesAutoresizingMaskIntoConstraints="NO" id="pjg-xX-xV1"> + <rect key="frame" x="0.0" y="0.66666666666668561" width="9.6666666666666661" height="10"/> + <constraints> + <constraint firstAttribute="width" constant="9.5" id="66U-WC-bbO"/> + <constraint firstAttribute="height" constant="10" id="TLw-b9-1bj"/> + </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="fDf-4X-hUI"> + <rect key="frame" x="16" y="0.0" width="224" height="11"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="9"/> + <color key="textColor" red="0.1803921568627451" green="0.1803921568627451" blue="0.1803921568627451" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="pjg-xX-xV1" firstAttribute="centerY" secondItem="O2C-vA-cCo" secondAttribute="centerY" id="8eR-ZL-u3N"/> + <constraint firstItem="fDf-4X-hUI" firstAttribute="centerY" secondItem="O2C-vA-cCo" secondAttribute="centerY" id="CZ0-31-1Ob"/> + <constraint firstItem="fDf-4X-hUI" firstAttribute="leading" secondItem="pjg-xX-xV1" secondAttribute="trailing" constant="6.5" id="Dco-J0-Uwy"/> + <constraint firstAttribute="height" constant="11.5" id="Vu6-QA-qoG"/> + <constraint firstItem="pjg-xX-xV1" firstAttribute="leading" secondItem="O2C-vA-cCo" secondAttribute="leading" id="taF-B9-udb"/> + <constraint firstAttribute="trailing" secondItem="fDf-4X-hUI" secondAttribute="trailing" id="u9h-ka-MTH"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Zw1-xu-iJP"> + <rect key="frame" x="0.0" y="18" width="240" height="11.666666666666664"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_local" translatesAutoresizingMaskIntoConstraints="NO" id="9xu-m3-4Al"> + <rect key="frame" x="0.0" y="0.66666666666668561" width="9.6666666666666661" height="10"/> + <constraints> + <constraint firstAttribute="width" constant="9.5" id="D7S-8u-g4p"/> + </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="28i-aJ-cBs"> + <rect key="frame" x="16" y="0.33333333333331439" width="224" height="11"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="9"/> + <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="9xu-m3-4Al" firstAttribute="centerY" secondItem="Zw1-xu-iJP" secondAttribute="centerY" id="Cam-cd-Vyk"/> + <constraint firstAttribute="height" constant="11.5" id="Iwi-Qa-FDd"/> + <constraint firstItem="28i-aJ-cBs" firstAttribute="centerY" secondItem="Zw1-xu-iJP" secondAttribute="centerY" id="Kcp-sF-Jz5"/> + <constraint firstItem="9xu-m3-4Al" firstAttribute="leading" secondItem="Zw1-xu-iJP" secondAttribute="leading" id="UuL-Rl-5Bd"/> + <constraint firstItem="28i-aJ-cBs" firstAttribute="leading" secondItem="9xu-m3-4Al" secondAttribute="trailing" constant="6.5" id="phb-2w-5ig"/> + <constraint firstAttribute="trailing" secondItem="28i-aJ-cBs" secondAttribute="trailing" id="u26-L7-Pbp"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="D2P-HH-gTE"> + <rect key="frame" x="0.0" y="36.333333333333314" width="240" height="11.333333333333336"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_time_1" translatesAutoresizingMaskIntoConstraints="NO" id="sSU-es-3e5"> + <rect key="frame" x="0.0" y="0.66666666666668561" width="9.6666666666666661" height="10"/> + <constraints> + <constraint firstAttribute="height" constant="10" id="pXr-WG-eZY"/> + <constraint firstAttribute="width" constant="9.5" id="t2o-QH-14G"/> + </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="49g-Ie-o9H"> + <rect key="frame" x="16" y="0.0" width="224" height="11"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="9"/> + <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="sSU-es-3e5" firstAttribute="centerY" secondItem="D2P-HH-gTE" secondAttribute="centerY" id="5Tk-01-k1d"/> + <constraint firstItem="49g-Ie-o9H" firstAttribute="leading" secondItem="sSU-es-3e5" secondAttribute="trailing" constant="6.5" id="96o-XW-Fot"/> + <constraint firstItem="49g-Ie-o9H" firstAttribute="centerY" secondItem="D2P-HH-gTE" secondAttribute="centerY" id="Nho-fI-tYh"/> + <constraint firstItem="sSU-es-3e5" firstAttribute="leading" secondItem="D2P-HH-gTE" secondAttribute="leading" id="nrc-Jd-Bjp"/> + <constraint firstAttribute="trailing" secondItem="49g-Ie-o9H" secondAttribute="trailing" id="rRG-7C-Nzg"/> + <constraint firstAttribute="height" constant="11.5" id="wRH-kO-e00"/> + </constraints> + </view> + </subviews> + </stackView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="简介" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dmh-Sc-k0l"> + <rect key="frame" x="26.666666666666671" y="484.33333333333331" width="41" height="24"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/> + <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="synopsis" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GpL-nu-QRg"> + <rect key="frame" x="324.33333333333331" y="490.33333333333331" width="42.333333333333314" height="12"/> + <fontDescription key="fontDescription" type="system" pointSize="10"/> + <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <nil key="highlightedColor"/> + </label> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oEQ-kJ-4nA"> + <rect key="frame" x="27" y="519.66666666666663" width="339" height="0.66666666666662877"/> + <color key="backgroundColor" red="0.33725490200000002" green="0.33725490200000002" blue="0.33725490200000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstAttribute="height" constant="0.5" id="DIz-JD-EMZ"/> + </constraints> + </view> + <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IFs-PA-QBm"> + <rect key="frame" x="27" y="539.33333333333337" width="339" height="200"/> + <constraints> + <constraint firstAttribute="height" constant="200" id="rWr-aC-9mh"/> + </constraints> + <wkWebViewConfiguration key="configuration"> + <audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/> + <wkPreferences key="preferences"/> + </wkWebViewConfiguration> + </wkWebView> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="bRv-iS-Gxa" firstAttribute="top" secondItem="SvO-06-u0I" secondAttribute="top" id="6zr-oX-fzV"/> + <constraint firstItem="ied-2M-OzN" firstAttribute="top" secondItem="eFG-qF-ock" secondAttribute="bottom" constant="12" id="Are-Tb-Qeg"/> + <constraint firstItem="eFG-qF-ock" firstAttribute="leading" secondItem="SvO-06-u0I" secondAttribute="leading" constant="27" id="BC0-fp-qkG"/> + <constraint firstItem="ej2-gY-nmo" firstAttribute="leading" secondItem="SvO-06-u0I" secondAttribute="leading" constant="26.5" id="Lqo-QQ-LtF"/> + <constraint firstAttribute="trailing" secondItem="IFs-PA-QBm" secondAttribute="trailing" constant="27" id="MTp-cU-OI2"/> + <constraint firstItem="Dmh-Sc-k0l" firstAttribute="leading" secondItem="SvO-06-u0I" secondAttribute="leading" constant="26.5" id="MeG-Nf-cTv"/> + <constraint firstAttribute="trailing" secondItem="eFG-qF-ock" secondAttribute="trailing" constant="27" id="NBo-De-g2n"/> + <constraint firstAttribute="trailing" secondItem="bRv-iS-Gxa" secondAttribute="trailing" id="NYn-uO-fjQ"/> + <constraint firstItem="bRv-iS-Gxa" firstAttribute="leading" secondItem="SvO-06-u0I" secondAttribute="leading" id="QMU-QN-ZLA"/> + <constraint firstItem="ied-2M-OzN" firstAttribute="leading" secondItem="SvO-06-u0I" secondAttribute="leading" constant="28" id="Rqi-qX-eXu"/> + <constraint firstAttribute="trailing" secondItem="oEQ-kJ-4nA" secondAttribute="trailing" constant="27" id="Sd2-nj-XrL"/> + <constraint firstItem="IFs-PA-QBm" firstAttribute="leading" secondItem="SvO-06-u0I" secondAttribute="leading" constant="27" id="Z2K-qe-Ktl"/> + <constraint firstItem="oEQ-kJ-4nA" firstAttribute="leading" secondItem="SvO-06-u0I" secondAttribute="leading" constant="27" id="ba8-C7-Iqh"/> + <constraint firstAttribute="bottom" secondItem="IFs-PA-QBm" secondAttribute="bottom" constant="19" id="dWt-F0-gfr"/> + <constraint firstItem="IFs-PA-QBm" firstAttribute="top" secondItem="oEQ-kJ-4nA" secondAttribute="bottom" constant="19" id="eF2-JE-MQL"/> + <constraint firstItem="mof-4V-8Cf" firstAttribute="centerY" secondItem="ej2-gY-nmo" secondAttribute="centerY" id="jZv-B2-BSI"/> + <constraint firstItem="GpL-nu-QRg" firstAttribute="centerY" secondItem="Dmh-Sc-k0l" secondAttribute="centerY" id="obV-cX-28h"/> + <constraint firstItem="eFG-qF-ock" firstAttribute="top" secondItem="ej2-gY-nmo" secondAttribute="bottom" constant="10.5" id="qa9-Bi-xv9"/> + <constraint firstItem="ej2-gY-nmo" firstAttribute="top" secondItem="bRv-iS-Gxa" secondAttribute="bottom" constant="31.5" id="qel-uN-FWm"/> + <constraint firstItem="oEQ-kJ-4nA" firstAttribute="top" secondItem="Dmh-Sc-k0l" secondAttribute="bottom" constant="11.5" id="tOQ-TD-dfZ"/> + <constraint firstAttribute="trailing" secondItem="mof-4V-8Cf" secondAttribute="trailing" constant="26.5" id="v3U-ic-0Xj"/> + <constraint firstItem="Dmh-Sc-k0l" firstAttribute="top" secondItem="ied-2M-OzN" secondAttribute="bottom" constant="43.5" id="vMy-Av-7Rs"/> + <constraint firstAttribute="trailing" secondItem="GpL-nu-QRg" secondAttribute="trailing" constant="26.5" id="xsc-7t-LAd"/> + </constraints> + </view> + </subviews> + <constraints> + <constraint firstItem="SvO-06-u0I" firstAttribute="leading" secondItem="yya-lM-LKe" secondAttribute="leading" id="Aj3-iz-RbA"/> + <constraint firstItem="SvO-06-u0I" firstAttribute="centerX" secondItem="yya-lM-LKe" secondAttribute="centerX" id="PcK-47-WUi"/> + <constraint firstAttribute="trailing" secondItem="SvO-06-u0I" secondAttribute="trailing" id="WYR-TT-BBA"/> + <constraint firstItem="SvO-06-u0I" firstAttribute="top" secondItem="yya-lM-LKe" secondAttribute="top" id="rt0-Dg-OJG"/> + <constraint firstAttribute="bottom" secondItem="SvO-06-u0I" secondAttribute="bottom" id="vke-LX-G0X"/> + </constraints> + </scrollView> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="yya-lM-LKe" secondAttribute="trailing" id="28E-wm-vmV"/> + <constraint firstItem="yya-lM-LKe" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="6e5-We-Cu0"/> + <constraint firstAttribute="bottom" secondItem="yya-lM-LKe" secondAttribute="bottom" id="iCP-Oe-Fqr"/> + <constraint firstItem="yya-lM-LKe" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="lWY-Wt-eNv"/> + </constraints> + <point key="canvasLocation" x="14.503816793893129" y="19.718309859154932"/> + </view> + </objects> + <resources> + <image name="icon_local" width="8" height="10"/> + <image name="icon_phone" width="8.6666669845581055" height="8.6666669845581055"/> + <image name="icon_time_1" width="9" height="9"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/Root/Pavilion/VC/PavilionSearchVC.swift b/XQMuse/Root/Pavilion/VC/PavilionSearchVC.swift new file mode 100644 index 0000000..42c9e3f --- /dev/null +++ b/XQMuse/Root/Pavilion/VC/PavilionSearchVC.swift @@ -0,0 +1,78 @@ +// +// PavilionSearchVC.swift +// XQMuse +// +// Created by 无故事王国 on 2024/8/19. +// + +import UIKit +import JQTools + +class PavilionSearchVC: BaseVC { + + @IBOutlet weak var tf_search: UITextField! + @IBOutlet weak var collectionView: UICollectionView! + + override func viewDidLoad() { + super.viewDidLoad() + title = "疗愈馆" + tf_search.delegate = self + tf_search.returnKeyType = .search + } + + override func setUI() { + super.setUI() + view.backgroundColor = UIColor(hexString: "#f6f6f6") + + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = false + collectionView.backgroundColor = .clear + collectionView.contentInset = UIEdgeInsets(top: 0, left: 28.5, bottom: 0, right: 28.5) + collectionView.register(UINib(nibName: "PavilionItemCell", bundle: nil), forCellWithReuseIdentifier: "_PavilionItemCell") + } +} + +extension PavilionSearchVC:UITextFieldDelegate{ + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + return true + } +} + +extension PavilionSearchVC:UICollectionViewDataSource{ + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let detailVC = PavilionDetailVC() + push(vc: detailVC) + } + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_PavilionItemCell", for: indexPath) as! PavilionItemCell + cell.backgroundColor = .jq_randomColor + cell.jq_cornerRadius = 16 + return cell + + } + + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 10 + } +} + +extension PavilionSearchVC:UICollectionViewDelegateFlowLayout{ + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 25.5 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 19 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + let w = (JQ_ScreenW - 28.5 * 2 - 19) / 2.0 + let h = w * 1.2681 + return CGSizeMake(w, h) + } +} diff --git a/XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib b/XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib new file mode 100644 index 0000000..43ec988 --- /dev/null +++ b/XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib @@ -0,0 +1,100 @@ +<?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="PavilionSearchVC" customModule="XQMuse" customModuleProvider="target"> + <connections> + <outlet property="collectionView" destination="GII-EZ-ldn" id="2aA-lL-quB"/> + <outlet property="tf_search" destination="NAr-DA-yxv" id="5eB-FY-GWu"/> + <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> + </connections> + </placeholder> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> + <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="amB-PO-kjr"> + <rect key="frame" x="21.666666666666657" y="80.666666666666671" width="306" height="49.000000000000014"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_search" translatesAutoresizingMaskIntoConstraints="NO" id="hNQ-kz-xpp"> + <rect key="frame" x="34" y="13.333333333333329" width="22.333333333333329" height="22"/> + <constraints> + <constraint firstAttribute="width" constant="22.5" id="KpR-0C-YFT"/> + <constraint firstAttribute="height" constant="22" id="LHs-vU-Px6"/> + </constraints> + </imageView> + <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="搜索你附近的疗愈馆" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="NAr-DA-yxv"> + <rect key="frame" x="68.000000000000014" y="0.0" width="226.33333333333337" height="49"/> + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> + <textInputTraits key="textInputTraits"/> + </textField> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="NAr-DA-yxv" secondAttribute="bottom" id="0Sg-DS-zeb"/> + <constraint firstItem="NAr-DA-yxv" firstAttribute="leading" secondItem="hNQ-kz-xpp" secondAttribute="trailing" constant="11.5" id="Qqk-Gb-mjh"/> + <constraint firstItem="NAr-DA-yxv" firstAttribute="top" secondItem="amB-PO-kjr" secondAttribute="top" id="UXp-Jq-JiI"/> + <constraint firstAttribute="height" constant="49" id="bXE-9n-1MF"/> + <constraint firstItem="hNQ-kz-xpp" firstAttribute="centerY" secondItem="amB-PO-kjr" secondAttribute="centerY" id="goC-db-zlE"/> + <constraint firstItem="hNQ-kz-xpp" firstAttribute="leading" secondItem="amB-PO-kjr" secondAttribute="leading" constant="34" id="ix8-dD-VnV"/> + <constraint firstAttribute="trailing" secondItem="NAr-DA-yxv" secondAttribute="trailing" constant="11.5" id="n1k-s3-h9Q"/> + </constraints> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> + <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> + <real key="value" value="24.5"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + </view> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WvZ-LY-I3P"> + <rect key="frame" x="327.66666666666669" y="80.666666666666671" width="65.333333333333314" height="49.000000000000014"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <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.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + </button> + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="GII-EZ-ldn"> + <rect key="frame" x="0.0" y="149" width="393" height="669"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Vo5-BY-YbS"> + <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> + </subviews> + <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="amB-PO-kjr" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="21.5" id="0gy-LC-YZa"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="GII-EZ-ldn" secondAttribute="trailing" id="75l-Cx-Qoq"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="WvZ-LY-I3P" secondAttribute="trailing" id="8Yj-48-Lmg"/> + <constraint firstItem="WvZ-LY-I3P" firstAttribute="leading" secondItem="amB-PO-kjr" secondAttribute="trailing" id="8ga-y0-OVr"/> + <constraint firstItem="amB-PO-kjr" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="21.5" id="Aeg-39-qgf"/> + <constraint firstItem="GII-EZ-ldn" firstAttribute="top" secondItem="amB-PO-kjr" secondAttribute="bottom" constant="19.5" id="HRU-9e-XkR"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="GII-EZ-ldn" secondAttribute="bottom" id="SUx-Iy-v23"/> + <constraint firstItem="WvZ-LY-I3P" firstAttribute="bottom" secondItem="amB-PO-kjr" secondAttribute="bottom" id="XlE-ab-52s"/> + <constraint firstAttribute="trailing" secondItem="amB-PO-kjr" secondAttribute="trailing" constant="65.5" id="dnQ-Xn-12W"/> + <constraint firstItem="GII-EZ-ldn" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="ofV-Jz-9c2"/> + <constraint firstItem="WvZ-LY-I3P" firstAttribute="top" secondItem="amB-PO-kjr" secondAttribute="top" id="sPA-hk-IRk"/> + </constraints> + <point key="canvasLocation" x="110.68702290076335" y="20.422535211267608"/> + </view> + </objects> + <resources> + <image name="icon_search" width="22.666666030883789" height="22"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/XQMuse/SceneDelegate.swift b/XQMuse/SceneDelegate.swift index 7be5b9f..78438cd 100644 --- a/XQMuse/SceneDelegate.swift +++ b/XQMuse/SceneDelegate.swift @@ -29,6 +29,7 @@ let tabbar = BaseTabBarVC() window?.rootViewController = tabbar window?.makeKeyAndVisible() + tabbar.selectedIndex = 0 SVProgressHUD.setContainerView(window) SVProgressHUD.setDefaultStyle(.dark) -- Gitblit v1.7.1