| | |
| | | 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>"; }; |
| | |
| | | 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, |
| | | 1CAB16A12A28E8BE749202B03552307A /* ObjcExceptionBridging */, |
| | | EF7CAA240FEB94F29DBE3D91C8BDE565 /* ObjcExceptionBridging-ObjcExceptionBridging */, |
| | | B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper */, |
| | | B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper.framework */, |
| | | FE6B8ABE5D0AD8A55BCFA48D21915C07 /* ObjectMapper-Privacy */, |
| | | 9BF996C0A7457E7225FF8490CAF59206 /* Pods-XQMuse */, |
| | | 8596B7A0C5A3E188061E9EDDAB573FCE /* QMUIKit */, |
| | |
| | | ); |
| | | name = ObjectMapper; |
| | | productName = ObjectMapper; |
| | | productReference = B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper */; |
| | | productReference = B9084FE779702931E8DF1D00A2D725FB /* ObjectMapper.framework */; |
| | | productType = "com.apple.product-type.framework"; |
| | | }; |
| | | 18BB9F72CD23264E98BCA91A99917C56 /* UserDefaultsStore */ = { |
| | |
| | | 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", |
| | |
| | | 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", |
| | |
| | | 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 */; }; |
| | |
| | | 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 */; }; |
| | |
| | | 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 */; }; |
| | |
| | | 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 */ |
| | | |
| | |
| | | 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>"; }; |
| | |
| | | 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>"; }; |
| | |
| | | 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>"; }; |
| | |
| | | 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>"; }; |
| | |
| | | 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>"; |
| | |
| | | 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 */ = { |
| | |
| | | 13985DC52C69E9260046B6DC /* Course */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 13FB6D882C6EFA8400A0685D /* View */, |
| | | 13FB6D812C6EEFD200A0685D /* TCell */, |
| | | 134A45362C6E165F00538D78 /* CCell */, |
| | | 134A452F2C6E0D3800538D78 /* VC */, |
| | | 13985DC62C69E9550046B6DC /* CourseVC.swift */, |
| | |
| | | 13985DC82C69E9940046B6DC /* Pavilion */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 134CC7DD2C73282400EAEFB7 /* VC */, |
| | | 13334FD82C73219A00914086 /* CCell */, |
| | | 13985DCB2C69E9FA0046B6DC /* PavilionVC.swift */, |
| | | 13334FD62C731E0B00914086 /* PavilionVC.xib */, |
| | | ); |
| | | path = Pavilion; |
| | | sourceTree = "<group>"; |
| | |
| | | 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>"; |
| | |
| | | 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 */, |
| | |
| | | 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 */, |
| | |
| | | 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 */, |
| | |
| | | 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 */, |
| | |
| | | 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 */, |
| | |
| | | 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 */, |
| | |
| | | 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; |
| | | }; |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "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 |
| | | } |
| | | } |
| | |
| | | |
| | | /// 需要透明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 |
| | |
| | | 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) |
| | |
| | | navigationItem.leftBarButtonItem = UIBarButtonItem.jq_creat(image: nav_back_img, target: self, alignment:.left, action: #selector(backItemEvent)).item |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | func setRx(){ |
| | |
| | | // |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class CourseOfficalCommendTopCCell: UICollectionViewCell { |
| | | |
| | | @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 |
| | | } |
| | | } |
| | |
| | | <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> |
New file |
| | |
| | | // |
| | | // 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 |
| | | |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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 |
| | | } |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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) |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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 |
| | | } |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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) |
| | | } |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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 |
| | | } |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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) |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | // |
| | | // 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{ |
| | | |
| | | |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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) |
| | | } |
| | | } |
| | |
| | | |
| | | 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() { |
| | |
| | | |
| | | 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{ |
| | |
| | | |
| | | 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 |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | import JQTools |
| | | |
| | | class CourseVCTeacherSpecialVC: BaseVC { |
| | | private var tableView:UITableView? |
| | | private var headerView:VideoView! |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | view.backgroundColor = .jq_randomColor |
| | | } |
| | | |
| | | |
| | | /* |
| | | // MARK: - Navigation |
| | | |
| | | // In a storyboard-based application, you will often want to do a little preparation before navigation |
| | | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { |
| | | // Get the new view controller using segue.destination. |
| | | // Pass the selected object to the new view controller. |
| | | 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") |
| | | |
| | | 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{ |
| | | |
| | | |
| | | } |
New file |
| | |
| | | // |
| | | // 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() |
| | | } |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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() |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | <?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> |
| | |
| | | var title = "" |
| | | var subTitle = "" |
| | | var hasMore:Bool = false |
| | | var coverImage:String? |
| | | } |
| | | |
| | | class HomeVC: BaseVC { |
New file |
| | |
| | | // |
| | | // 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") |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | // |
| | | // PavilionItemCell.swift |
| | | // XQMuse |
| | | // |
| | | // Created by 无故事王国 on 2024/8/19. |
| | | // |
| | | |
| | | import UIKit |
| | | |
| | | class PavilionItemCell: UICollectionViewCell { |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?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> |
| | |
| | | // |
| | | |
| | | 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. |
| | | } |
| | | |
| | | 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") |
| | | } |
| | | |
| | | |
| | | /* |
| | | // MARK: - Navigation |
| | | |
| | | // In a storyboard-based application, you will often want to do a little preparation before navigation |
| | | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { |
| | | // Get the new view controller using segue.destination. |
| | | // Pass the selected object to the new view controller. |
| | | @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 |
| | | // } |
| | | //} |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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 |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | // |
| | | // 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) |
| | | } |
| | | } |
New file |
| | |
| | | <?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> |
| | |
| | | let tabbar = BaseTabBarVC() |
| | | window?.rootViewController = tabbar |
| | | window?.makeKeyAndVisible() |
| | | tabbar.selectedIndex = 0 |
| | | |
| | | SVProgressHUD.setContainerView(window) |
| | | SVProgressHUD.setDefaultStyle(.dark) |