| | |
| | | |
| | | /* Begin PBXBuildFile section */ |
| | | 32D5FD87AB45829154125950 /* Pods_WanPai.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F12BCB644B5E0392E2BFF8C7 /* Pods_WanPai.framework */; }; |
| | | 8D4905A92A31A6EC00E38513 /* HomeCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D4905A72A31A6EC00E38513 /* HomeCCell.swift */; }; |
| | | 8D4905AA2A31A6EC00E38513 /* HomeCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D4905A82A31A6EC00E38513 /* HomeCCell.xib */; }; |
| | | 8D4905AD2A31AE7100E38513 /* JoinMemberIntroduceVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D4905AB2A31AE7100E38513 /* JoinMemberIntroduceVC.swift */; }; |
| | | 8D4905AE2A31AE7100E38513 /* JoinMemberIntroduceVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D4905AC2A31AE7100E38513 /* JoinMemberIntroduceVC.xib */; }; |
| | | 8D5B80B72A31C4C700B86520 /* PaymentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B80B62A31C4C700B86520 /* PaymentView.xib */; }; |
| | | 8D5C15062A31861D00A8BCC9 /* TapBtn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5C15052A31861C00A8BCC9 /* TapBtn.swift */; }; |
| | | 8D5C150C2A31885B00A8BCC9 /* CommonAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D5C15082A31885B00A8BCC9 /* CommonAlertView.xib */; }; |
| | | 8D5C150D2A31885B00A8BCC9 /* AgreentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D5C15092A31885B00A8BCC9 /* AgreentView.xib */; }; |
| | | 8D5C150E2A31885B00A8BCC9 /* CommonAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5C150A2A31885B00A8BCC9 /* CommonAlertView.swift */; }; |
| | | 8D5C150F2A31885B00A8BCC9 /* AgreentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5C150B2A31885B00A8BCC9 /* AgreentView.swift */; }; |
| | | 8D630BF82A31801300F0B7A8 /* SearchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D630BF62A31801300F0B7A8 /* SearchVC.swift */; }; |
| | | 8D630BF92A31801300F0B7A8 /* SearchVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D630BF72A31801300F0B7A8 /* SearchVC.xib */; }; |
| | | 8D630BFB2A3180B000F0B7A8 /* BaseTabBarVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D630BFA2A3180B000F0B7A8 /* BaseTabBarVC.swift */; }; |
| | | 8D667BF42A31C419005B02FB /* PaymentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D667BF32A31C419005B02FB /* PaymentView.swift */; }; |
| | | 8D710F6D2A31897C0031E2D1 /* WaterFallFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D710F6C2A31897C0031E2D1 /* WaterFallFlowLayout.swift */; }; |
| | | 8D8400D22A2F1430003AF6A2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8400D12A2F1430003AF6A2 /* AppDelegate.swift */; }; |
| | | 8D8400D42A2F1430003AF6A2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8400D32A2F1430003AF6A2 /* SceneDelegate.swift */; }; |
| | | 8D8400D92A2F1430003AF6A2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8D8400D72A2F1430003AF6A2 /* Main.storyboard */; }; |
| | |
| | | 8D8400DE2A2F1432003AF6A2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8D8400DC2A2F1432003AF6A2 /* LaunchScreen.storyboard */; }; |
| | | 8D8400E92A2F14A3003AF6A2 /* LoginVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8400E72A2F14A3003AF6A2 /* LoginVC.swift */; }; |
| | | 8D8400EA2A2F14A3003AF6A2 /* LoginVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D8400E82A2F14A3003AF6A2 /* LoginVC.xib */; }; |
| | | 8DA901FF2A308E9200918C98 /* AgreentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DA901FE2A308E9200918C98 /* AgreentView.swift */; }; |
| | | 8DA902012A308ED100918C98 /* AgreentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DA902002A308ED100918C98 /* AgreentView.xib */; }; |
| | | 8D8DEDED2A31D82100F2C7FA /* PaymentResultVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8DEDEB2A31D82100F2C7FA /* PaymentResultVC.swift */; }; |
| | | 8D8DEDEE2A31D82100F2C7FA /* PaymentResultVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D8DEDEC2A31D82100F2C7FA /* PaymentResultVC.xib */; }; |
| | | 8D8DEDF22A31DDC500F2C7FA /* CouponCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8DEDF02A31DDC500F2C7FA /* CouponCCell.swift */; }; |
| | | 8D8DEDF32A31DDC500F2C7FA /* CouponCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D8DEDF12A31DDC500F2C7FA /* CouponCCell.xib */; }; |
| | | 8DA51DF72A32BE270085F4BA /* Enums.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DA51DF62A32BE270085F4BA /* Enums.swift */; }; |
| | | 8DAEB54A2A30593C00814766 /* BaseNav.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB5482A30593B00814766 /* BaseNav.swift */; }; |
| | | 8DAEB54B2A30593C00814766 /* BaseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB5492A30593C00814766 /* BaseVC.swift */; }; |
| | | 8DAEB54E2A305A0100814766 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB54D2A305A0100814766 /* Colors.swift */; }; |
| | | 8DAEB5502A305AEF00814766 /* Def.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB54F2A305AEF00814766 /* Def.swift */; }; |
| | | 8DAEB5522A305B2D00814766 /* Fronts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB5512A305B2D00814766 /* Fronts.swift */; }; |
| | | 8DAEB5562A3062B800814766 /* CommonAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB5552A3062B800814766 /* CommonAlertView.swift */; }; |
| | | 8DAEB5582A3062D900814766 /* CommonAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DAEB5572A3062D900814766 /* CommonAlertView.xib */; }; |
| | | 8DFA9B762A316E9A00E99281 /* LoginRegOrForgotVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA9B742A316E9A00E99281 /* LoginRegOrForgotVC.swift */; }; |
| | | 8DFA9B772A316E9A00E99281 /* LoginRegOrForgotVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DFA9B752A316E9A00E99281 /* LoginRegOrForgotVC.xib */; }; |
| | | 8DFA9B852A3172BE00E99281 /* HomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA9B832A3172BE00E99281 /* HomeVC.swift */; }; |
| | | 8DFA9B862A3172BE00E99281 /* HomeVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DFA9B842A3172BE00E99281 /* HomeVC.xib */; }; |
| | | 8DFA9B8B2A317DAA00E99281 /* CourseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA9B892A317DAA00E99281 /* CourseVC.swift */; }; |
| | | 8DFA9B8C2A317DAA00E99281 /* CourseVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DFA9B8A2A317DAA00E99281 /* CourseVC.xib */; }; |
| | | 8DFA9B912A317DE900E99281 /* WelfareVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA9B8F2A317DE900E99281 /* WelfareVC.swift */; }; |
| | | 8DFA9B922A317DE900E99281 /* WelfareVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DFA9B902A317DE900E99281 /* WelfareVC.xib */; }; |
| | | /* End PBXBuildFile section */ |
| | | |
| | | /* Begin PBXFileReference section */ |
| | | 0995405518BC2BFFEF866458 /* Pods-WanPai.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WanPai.release.xcconfig"; path = "Target Support Files/Pods-WanPai/Pods-WanPai.release.xcconfig"; sourceTree = "<group>"; }; |
| | | 732365E0737559969E7CB12D /* Pods-WanPai.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WanPai.debug.xcconfig"; path = "Target Support Files/Pods-WanPai/Pods-WanPai.debug.xcconfig"; sourceTree = "<group>"; }; |
| | | 8D4905A72A31A6EC00E38513 /* HomeCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCCell.swift; sourceTree = "<group>"; }; |
| | | 8D4905A82A31A6EC00E38513 /* HomeCCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCCell.xib; sourceTree = "<group>"; }; |
| | | 8D4905AB2A31AE7100E38513 /* JoinMemberIntroduceVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinMemberIntroduceVC.swift; sourceTree = "<group>"; }; |
| | | 8D4905AC2A31AE7100E38513 /* JoinMemberIntroduceVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = JoinMemberIntroduceVC.xib; sourceTree = "<group>"; }; |
| | | 8D5B80B62A31C4C700B86520 /* PaymentView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PaymentView.xib; sourceTree = "<group>"; }; |
| | | 8D5C15052A31861C00A8BCC9 /* TapBtn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapBtn.swift; sourceTree = "<group>"; }; |
| | | 8D5C15082A31885B00A8BCC9 /* CommonAlertView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CommonAlertView.xib; sourceTree = "<group>"; }; |
| | | 8D5C15092A31885B00A8BCC9 /* AgreentView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AgreentView.xib; sourceTree = "<group>"; }; |
| | | 8D5C150A2A31885B00A8BCC9 /* CommonAlertView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommonAlertView.swift; sourceTree = "<group>"; }; |
| | | 8D5C150B2A31885B00A8BCC9 /* AgreentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AgreentView.swift; sourceTree = "<group>"; }; |
| | | 8D630BF62A31801300F0B7A8 /* SearchVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchVC.swift; sourceTree = "<group>"; }; |
| | | 8D630BF72A31801300F0B7A8 /* SearchVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SearchVC.xib; sourceTree = "<group>"; }; |
| | | 8D630BFA2A3180B000F0B7A8 /* BaseTabBarVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTabBarVC.swift; sourceTree = "<group>"; }; |
| | | 8D667BF32A31C419005B02FB /* PaymentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentView.swift; sourceTree = "<group>"; }; |
| | | 8D710F6C2A31897C0031E2D1 /* WaterFallFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaterFallFlowLayout.swift; sourceTree = "<group>"; }; |
| | | 8D8400CE2A2F1430003AF6A2 /* WanPai.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WanPai.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
| | | 8D8400D12A2F1430003AF6A2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; |
| | | 8D8400D32A2F1430003AF6A2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; |
| | |
| | | 8D8400DF2A2F1432003AF6A2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; |
| | | 8D8400E72A2F14A3003AF6A2 /* LoginVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginVC.swift; sourceTree = "<group>"; }; |
| | | 8D8400E82A2F14A3003AF6A2 /* LoginVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LoginVC.xib; sourceTree = "<group>"; }; |
| | | 8DA901FE2A308E9200918C98 /* AgreentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgreentView.swift; sourceTree = "<group>"; }; |
| | | 8DA902002A308ED100918C98 /* AgreentView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AgreentView.xib; sourceTree = "<group>"; }; |
| | | 8D8DEDEB2A31D82100F2C7FA /* PaymentResultVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentResultVC.swift; sourceTree = "<group>"; }; |
| | | 8D8DEDEC2A31D82100F2C7FA /* PaymentResultVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PaymentResultVC.xib; sourceTree = "<group>"; }; |
| | | 8D8DEDF02A31DDC500F2C7FA /* CouponCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponCCell.swift; sourceTree = "<group>"; }; |
| | | 8D8DEDF12A31DDC500F2C7FA /* CouponCCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CouponCCell.xib; sourceTree = "<group>"; }; |
| | | 8DA51DF62A32BE270085F4BA /* Enums.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Enums.swift; sourceTree = "<group>"; }; |
| | | 8DAEB5482A30593B00814766 /* BaseNav.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseNav.swift; sourceTree = "<group>"; }; |
| | | 8DAEB5492A30593C00814766 /* BaseVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseVC.swift; sourceTree = "<group>"; }; |
| | | 8DAEB54D2A305A0100814766 /* Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = "<group>"; }; |
| | | 8DAEB54F2A305AEF00814766 /* Def.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Def.swift; sourceTree = "<group>"; }; |
| | | 8DAEB5512A305B2D00814766 /* Fronts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fronts.swift; sourceTree = "<group>"; }; |
| | | 8DAEB5552A3062B800814766 /* CommonAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonAlertView.swift; sourceTree = "<group>"; }; |
| | | 8DAEB5572A3062D900814766 /* CommonAlertView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CommonAlertView.xib; sourceTree = "<group>"; }; |
| | | 8DFA9B742A316E9A00E99281 /* LoginRegOrForgotVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRegOrForgotVC.swift; sourceTree = "<group>"; }; |
| | | 8DFA9B752A316E9A00E99281 /* LoginRegOrForgotVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LoginRegOrForgotVC.xib; sourceTree = "<group>"; }; |
| | | 8DFA9B832A3172BE00E99281 /* HomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeVC.swift; sourceTree = "<group>"; }; |
| | | 8DFA9B842A3172BE00E99281 /* HomeVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeVC.xib; sourceTree = "<group>"; }; |
| | | 8DFA9B892A317DAA00E99281 /* CourseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseVC.swift; sourceTree = "<group>"; }; |
| | | 8DFA9B8A2A317DAA00E99281 /* CourseVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseVC.xib; sourceTree = "<group>"; }; |
| | | 8DFA9B8F2A317DE900E99281 /* WelfareVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelfareVC.swift; sourceTree = "<group>"; }; |
| | | 8DFA9B902A317DE900E99281 /* WelfareVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WelfareVC.xib; sourceTree = "<group>"; }; |
| | | F12BCB644B5E0392E2BFF8C7 /* Pods_WanPai.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WanPai.framework; sourceTree = BUILT_PRODUCTS_DIR; }; |
| | | /* End PBXFileReference section */ |
| | | |
| | |
| | | path = Pods; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8D4905A62A31A6D400E38513 /* CCell */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8D4905A72A31A6EC00E38513 /* HomeCCell.swift */, |
| | | 8D4905A82A31A6EC00E38513 /* HomeCCell.xib */, |
| | | ); |
| | | path = CCell; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8D5C15072A31885B00A8BCC9 /* View */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8D5C15082A31885B00A8BCC9 /* CommonAlertView.xib */, |
| | | 8D5C15092A31885B00A8BCC9 /* AgreentView.xib */, |
| | | 8D5C150A2A31885B00A8BCC9 /* CommonAlertView.swift */, |
| | | 8D5C150B2A31885B00A8BCC9 /* AgreentView.swift */, |
| | | 8D667BF32A31C419005B02FB /* PaymentView.swift */, |
| | | 8D5B80B62A31C4C700B86520 /* PaymentView.xib */, |
| | | ); |
| | | path = View; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8D5C15102A31886D00A8BCC9 /* Layout */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8D710F6C2A31897C0031E2D1 /* WaterFallFlowLayout.swift */, |
| | | ); |
| | | path = Layout; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8D8400C52A2F1430003AF6A2 = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | |
| | | 8D8400D02A2F1430003AF6A2 /* WanPai */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DFA9B782A31722300E99281 /* Root */, |
| | | 8DAEB5532A30629500814766 /* Common */, |
| | | 8DAEB54C2A3059F700814766 /* Config */, |
| | | 8DAEB5472A30592800814766 /* Base */, |
| | | 8D8400E52A2F145D003AF6A2 /* Login */, |
| | | 8D8400D12A2F1430003AF6A2 /* AppDelegate.swift */, |
| | | 8D8400D32A2F1430003AF6A2 /* SceneDelegate.swift */, |
| | | 8D8400D72A2F1430003AF6A2 /* Main.storyboard */, |
| | |
| | | children = ( |
| | | 8D8400E72A2F14A3003AF6A2 /* LoginVC.swift */, |
| | | 8D8400E82A2F14A3003AF6A2 /* LoginVC.xib */, |
| | | 8DFA9B742A316E9A00E99281 /* LoginRegOrForgotVC.swift */, |
| | | 8DFA9B752A316E9A00E99281 /* LoginRegOrForgotVC.xib */, |
| | | ); |
| | | path = VC; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8D8DEDE92A31D7F400F2C7FA /* Other */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8D8DEDEF2A31DDAA00F2C7FA /* CCell */, |
| | | 8D8DEDEA2A31D80B00F2C7FA /* VC */, |
| | | ); |
| | | path = Other; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8D8DEDEA2A31D80B00F2C7FA /* VC */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8D8DEDEB2A31D82100F2C7FA /* PaymentResultVC.swift */, |
| | | 8D8DEDEC2A31D82100F2C7FA /* PaymentResultVC.xib */, |
| | | ); |
| | | path = VC; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8D8DEDEF2A31DDAA00F2C7FA /* CCell */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8D8DEDF02A31DDC500F2C7FA /* CouponCCell.swift */, |
| | | 8D8DEDF12A31DDC500F2C7FA /* CouponCCell.xib */, |
| | | ); |
| | | path = CCell; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DAEB5472A30592800814766 /* Base */ = { |
| | |
| | | children = ( |
| | | 8DAEB5482A30593B00814766 /* BaseNav.swift */, |
| | | 8DAEB5492A30593C00814766 /* BaseVC.swift */, |
| | | 8D630BFA2A3180B000F0B7A8 /* BaseTabBarVC.swift */, |
| | | 8D5C15052A31861C00A8BCC9 /* TapBtn.swift */, |
| | | ); |
| | | path = Base; |
| | | sourceTree = "<group>"; |
| | |
| | | 8DAEB54D2A305A0100814766 /* Colors.swift */, |
| | | 8DAEB54F2A305AEF00814766 /* Def.swift */, |
| | | 8DAEB5512A305B2D00814766 /* Fronts.swift */, |
| | | 8DA51DF62A32BE270085F4BA /* Enums.swift */, |
| | | ); |
| | | path = Config; |
| | | sourceTree = "<group>"; |
| | |
| | | 8DAEB5532A30629500814766 /* Common */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DAEB5542A30629C00814766 /* View */, |
| | | 8D5C15102A31886D00A8BCC9 /* Layout */, |
| | | 8D5C15072A31885B00A8BCC9 /* View */, |
| | | ); |
| | | path = Common; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DAEB5542A30629C00814766 /* View */ = { |
| | | 8DFA9B782A31722300E99281 /* Root */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DAEB5552A3062B800814766 /* CommonAlertView.swift */, |
| | | 8DAEB5572A3062D900814766 /* CommonAlertView.xib */, |
| | | 8DA901FE2A308E9200918C98 /* AgreentView.swift */, |
| | | 8DA902002A308ED100918C98 /* AgreentView.xib */, |
| | | 8D8DEDE92A31D7F400F2C7FA /* Other */, |
| | | 8DFA9B932A317E1E00E99281 /* Search */, |
| | | 8DFA9B8D2A317DBB00E99281 /* Welfare */, |
| | | 8DFA9B872A317D8B00E99281 /* Course */, |
| | | 8D8400E52A2F145D003AF6A2 /* Login */, |
| | | 8DFA9B812A31729000E99281 /* Home */, |
| | | ); |
| | | name = View; |
| | | path = "../New Group/View"; |
| | | path = Root; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DFA9B812A31729000E99281 /* Home */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8D4905A62A31A6D400E38513 /* CCell */, |
| | | 8DFA9B822A3172A300E99281 /* VC */, |
| | | ); |
| | | path = Home; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DFA9B822A3172A300E99281 /* VC */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DFA9B832A3172BE00E99281 /* HomeVC.swift */, |
| | | 8DFA9B842A3172BE00E99281 /* HomeVC.xib */, |
| | | 8D4905AB2A31AE7100E38513 /* JoinMemberIntroduceVC.swift */, |
| | | 8D4905AC2A31AE7100E38513 /* JoinMemberIntroduceVC.xib */, |
| | | ); |
| | | path = VC; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DFA9B872A317D8B00E99281 /* Course */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DFA9B882A317D9B00E99281 /* VC */, |
| | | ); |
| | | path = Course; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DFA9B882A317D9B00E99281 /* VC */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DFA9B892A317DAA00E99281 /* CourseVC.swift */, |
| | | 8DFA9B8A2A317DAA00E99281 /* CourseVC.xib */, |
| | | ); |
| | | path = VC; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DFA9B8D2A317DBB00E99281 /* Welfare */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DFA9B8E2A317DDE00E99281 /* VC */, |
| | | ); |
| | | path = Welfare; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DFA9B8E2A317DDE00E99281 /* VC */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DFA9B8F2A317DE900E99281 /* WelfareVC.swift */, |
| | | 8DFA9B902A317DE900E99281 /* WelfareVC.xib */, |
| | | ); |
| | | path = VC; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DFA9B932A317E1E00E99281 /* Search */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8DFA9B942A317E2500E99281 /* VC */, |
| | | ); |
| | | path = Search; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | 8DFA9B942A317E2500E99281 /* VC */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 8D630BF62A31801300F0B7A8 /* SearchVC.swift */, |
| | | 8D630BF72A31801300F0B7A8 /* SearchVC.xib */, |
| | | ); |
| | | path = VC; |
| | | sourceTree = "<group>"; |
| | | }; |
| | | /* End PBXGroup section */ |
| | |
| | | isa = PBXResourcesBuildPhase; |
| | | buildActionMask = 2147483647; |
| | | files = ( |
| | | 8DFA9B8C2A317DAA00E99281 /* CourseVC.xib in Resources */, |
| | | 8D8400DE2A2F1432003AF6A2 /* LaunchScreen.storyboard in Resources */, |
| | | 8DFA9B772A316E9A00E99281 /* LoginRegOrForgotVC.xib in Resources */, |
| | | 8D8DEDEE2A31D82100F2C7FA /* PaymentResultVC.xib in Resources */, |
| | | 8D8400DB2A2F1432003AF6A2 /* Assets.xcassets in Resources */, |
| | | 8DFA9B862A3172BE00E99281 /* HomeVC.xib in Resources */, |
| | | 8DFA9B922A317DE900E99281 /* WelfareVC.xib in Resources */, |
| | | 8D8DEDF32A31DDC500F2C7FA /* CouponCCell.xib in Resources */, |
| | | 8D4905AE2A31AE7100E38513 /* JoinMemberIntroduceVC.xib in Resources */, |
| | | 8D5C150C2A31885B00A8BCC9 /* CommonAlertView.xib in Resources */, |
| | | 8D5B80B72A31C4C700B86520 /* PaymentView.xib in Resources */, |
| | | 8D8400EA2A2F14A3003AF6A2 /* LoginVC.xib in Resources */, |
| | | 8D5C150D2A31885B00A8BCC9 /* AgreentView.xib in Resources */, |
| | | 8D630BF92A31801300F0B7A8 /* SearchVC.xib in Resources */, |
| | | 8D4905AA2A31A6EC00E38513 /* HomeCCell.xib in Resources */, |
| | | 8D8400D92A2F1430003AF6A2 /* Main.storyboard in Resources */, |
| | | 8DAEB5582A3062D900814766 /* CommonAlertView.xib in Resources */, |
| | | 8DA902012A308ED100918C98 /* AgreentView.xib in Resources */, |
| | | ); |
| | | runOnlyForDeploymentPostprocessing = 0; |
| | | }; |
| | |
| | | isa = PBXSourcesBuildPhase; |
| | | buildActionMask = 2147483647; |
| | | files = ( |
| | | 8D4905AD2A31AE7100E38513 /* JoinMemberIntroduceVC.swift in Sources */, |
| | | 8D667BF42A31C419005B02FB /* PaymentView.swift in Sources */, |
| | | 8DFA9B762A316E9A00E99281 /* LoginRegOrForgotVC.swift in Sources */, |
| | | 8DFA9B8B2A317DAA00E99281 /* CourseVC.swift in Sources */, |
| | | 8DAEB54B2A30593C00814766 /* BaseVC.swift in Sources */, |
| | | 8DA901FF2A308E9200918C98 /* AgreentView.swift in Sources */, |
| | | 8DAEB5562A3062B800814766 /* CommonAlertView.swift in Sources */, |
| | | 8DAEB54E2A305A0100814766 /* Colors.swift in Sources */, |
| | | 8D630BF82A31801300F0B7A8 /* SearchVC.swift in Sources */, |
| | | 8DAEB54A2A30593C00814766 /* BaseNav.swift in Sources */, |
| | | 8D710F6D2A31897C0031E2D1 /* WaterFallFlowLayout.swift in Sources */, |
| | | 8DAEB5522A305B2D00814766 /* Fronts.swift in Sources */, |
| | | 8D8DEDED2A31D82100F2C7FA /* PaymentResultVC.swift in Sources */, |
| | | 8D8400D22A2F1430003AF6A2 /* AppDelegate.swift in Sources */, |
| | | 8D8DEDF22A31DDC500F2C7FA /* CouponCCell.swift in Sources */, |
| | | 8D5C150E2A31885B00A8BCC9 /* CommonAlertView.swift in Sources */, |
| | | 8D5C150F2A31885B00A8BCC9 /* AgreentView.swift in Sources */, |
| | | 8D8400E92A2F14A3003AF6A2 /* LoginVC.swift in Sources */, |
| | | 8D4905A92A31A6EC00E38513 /* HomeCCell.swift in Sources */, |
| | | 8DFA9B852A3172BE00E99281 /* HomeVC.swift in Sources */, |
| | | 8DFA9B912A317DE900E99281 /* WelfareVC.swift in Sources */, |
| | | 8D630BFB2A3180B000F0B7A8 /* BaseTabBarVC.swift in Sources */, |
| | | 8DAEB5502A305AEF00814766 /* Def.swift in Sources */, |
| | | 8D8400D42A2F1430003AF6A2 /* SceneDelegate.swift in Sources */, |
| | | 8DA51DF72A32BE270085F4BA /* Enums.swift in Sources */, |
| | | 8D5C15062A31861D00A8BCC9 /* TapBtn.swift in Sources */, |
| | | ); |
| | | runOnlyForDeploymentPostprocessing = 0; |
| | | }; |
New file |
| | |
| | | { |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "b_1@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "b_1@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "b_2@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "b_2@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "b_4@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "b_4@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "b_3@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "b_3@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "b_5@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "b_5@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "b_6@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "b_6@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "b_8@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "b_8@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "b_7@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "b_7@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "bg_home@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "bg_home@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_LOGO@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_LOGO@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "btn_add@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "btn_add@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "btn_choose@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "btn_choose@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "btn_choose_s@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "btn_choose_s@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_alipay@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_alipay@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_arrow@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_arrow@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_coin@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_coin@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_coupon_footer@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_coupon_footer@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_coupon_header@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_coupon_header@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_fail@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_fail@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_map@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_map@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_success@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_success@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_wechat@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_wechat@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_course@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_course@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_course_s@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_course_s@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_home@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_home@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_home_s@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_home_s@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_profile@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_profile@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_profile_s@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_profile_s@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_welfare@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_welfare@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_welfare_s@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "tabbar_welfare_s@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
| | |
| | | |
| | | private var popDelegate: UIGestureRecognizerDelegate? |
| | | |
| | | private let img = UIImage.jq_gradient([UIColor(hexStr: "#FD8C02"),UIColor(hexStr: "#FD7202")], size: CGSize(width: JQ_ScreenW, height: JQ_NavBarHeight), radius: 0, locations: [0,1], direction: .vertical) |
| | | |
| | | open override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | self.navigationBar.barTintColor = .white |
| | | self.navigationBar.titleTextAttributes = [.font:UIFont.systemFont(ofSize: 18, weight: .medium), .foregroundColor:UIColor.black] |
| | | self.navigationBar.titleTextAttributes = [.font:UIFont.systemFont(ofSize: 18, weight: .medium), .foregroundColor:UIColor.white] |
| | | self.navigationBar.tintColor = UIColor.black |
| | | self.navigationBar.shadowImage = UIImage() |
| | | self.navigationBar.isTranslucent = true |
| | |
| | | scrollBar.configureWithOpaqueBackground() |
| | | scrollBar.backgroundEffect = nil |
| | | scrollBar.shadowColor = nil |
| | | scrollBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont] |
| | | scrollBar.backgroundColor = UIColor.clear |
| | | scrollBar.backgroundImage = img |
| | | |
| | | |
| | | let standardBar = UINavigationBarAppearance() |
| | | standardBar.configureWithOpaqueBackground() |
| | | standardBar.backgroundEffect = nil |
| | | standardBar.shadowColor = nil |
| | | standardBar.shadowImage = nil |
| | | standardBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont] |
| | | standardBar.backgroundColor = UIColor.clear |
| | | standardBar.backgroundImage = img |
| | | |
| | | navigationBar.scrollEdgeAppearance = scrollBar //顶部透明 |
| | | navigationBar.standardAppearance = standardBar |
| | | |
| | | |
| | | }else { |
| | | navigationBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont] |
| | | } |
| | | } |
| | | |
| | | open func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { |
| | | if navigationController.viewControllers.count == 1{ |
| | | navigationBar.standardAppearance.backgroundImage = nil |
| | | navigationBar.scrollEdgeAppearance?.backgroundImage = nil |
| | | }else{ |
| | | navigationBar.standardAppearance.backgroundImage = img |
| | | navigationBar.scrollEdgeAppearance?.backgroundImage = img |
| | | } |
| | | } |
| | | |
| | | //侧滑 |
| | | public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) { |
| | | if viewController == self.viewControllers[0] { |
| | | self.interactivePopGestureRecognizer!.delegate = self.popDelegate |
| | | }else{ |
| | | self.interactivePopGestureRecognizer!.delegate = nil |
| | | } |
| | | } |
| | | |
| | | open override var childForStatusBarHidden: UIViewController? { |
| | | return self.topViewController |
| | | } |
| | | |
| | | open override var childForStatusBarStyle: UIViewController? { |
| | | return self.topViewController |
| | | } |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .lightContent |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | class LoginNav: UINavigationController,UINavigationControllerDelegate { |
| | | |
| | | private var popDelegate: UIGestureRecognizerDelegate? |
| | | |
| | | open override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | self.navigationBar.barTintColor = .white |
| | | self.navigationBar.titleTextAttributes = [.font:UIFont.systemFont(ofSize: 18, weight: .medium), .foregroundColor:UIColor.black] |
| | | self.navigationBar.tintColor = UIColor.black |
| | | self.navigationBar.shadowImage = UIImage() |
| | | self.navigationBar.isTranslucent = true |
| | | self.delegate = self |
| | | self.popDelegate = self.interactivePopGestureRecognizer?.delegate |
| | | |
| | | |
| | | if #available(iOS 15.0, *) { |
| | | |
| | | // let img = UIImage.jq_gradient([UIColor(hexStr: "#FD8C02"),UIColor(hexStr: "#FD7202")], size: CGSize(width: JQ_ScreenW, height: JQ_NavBarHeight), radius: 0, locations: [0,1], direction: .vertical) |
| | | |
| | | let scrollBar = UINavigationBarAppearance() |
| | | scrollBar.configureWithOpaqueBackground() |
| | | scrollBar.backgroundEffect = nil |
| | | scrollBar.shadowColor = nil |
| | | scrollBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont] |
| | | scrollBar.backgroundColor = UIColor.clear |
| | | // scrollBar.backgroundImage = img |
| | | |
| | | |
| | | let img = UIImage.jq_gradient([UIColor.black.withAlphaComponent(0.4),UIColor.clear], size: CGSize(width: JQ_ScreenW, height: JQ_NavBarHeight), radius: 0, locations: [0,1], direction: .vertical) |
| | | |
| | | let standardBar = UINavigationBarAppearance() |
| | | standardBar.configureWithOpaqueBackground() |
| | |
| | | standardBar.shadowImage = nil |
| | | standardBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont] |
| | | standardBar.backgroundColor = UIColor.clear |
| | | standardBar.backgroundImage = img |
| | | // standardBar.backgroundImage = img |
| | | |
| | | navigationBar.scrollEdgeAppearance = scrollBar //顶部透明 |
| | | navigationBar.standardAppearance = standardBar |
| | |
| | | } |
| | | } |
| | | |
| | | open override func pushViewController(_ viewController: UIViewController, animated: Bool) { |
| | | viewController.hidesBottomBarWhenPushed = true |
| | | super.pushViewController(viewController, animated: animated) |
| | | } |
| | | |
| | | open func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { |
| | | |
| | | |
| | | } |
| | | |
| | | //侧滑 |
New file |
| | |
| | | // |
| | | // BaseTabBarVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | |
| | | class BaseTabBarVC: UITabBarController { |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | tabBar.backgroundColor = .white |
| | | tabBar.tintColor = Def_ThemeColor |
| | | } |
| | | } |
| | |
| | | setData() |
| | | |
| | | if navigationController?.viewControllers.count ?? 0 > 1{ |
| | | |
| | | if navigationController is BaseNav{ |
| | | navigationItem.leftBarButtonItem = UIBarButtonItem.jq_creat(image: nav_back_img.withTintColor(.white), target: self, alignment:.left, action: #selector(backItemEvent)).item |
| | | }else{ |
| | | navigationItem.leftBarButtonItem = UIBarButtonItem.jq_creat(image: nav_back_img, target: self, alignment:.left, action: #selector(backItemEvent)).item |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | func refreshUI(){} |
| | | |
| | | func push(vc:UIViewController){ |
| | | vc.hidesBottomBarWhenPushed = true |
| | | navigationController?.pushViewController(vc, animated: true) |
| | | } |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .lightContent |
| | | } |
| | | |
| | | @objc fileprivate func backItemEvent() { |
| | | // 拦截pop事件 |
| | | if (yy_popBlock != nil) { |
New file |
| | |
| | | // |
| | | // TapBtn.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | |
| | | class TapBtn: UIButton { |
| | | |
| | | /* |
| | | // Only override draw() if you perform custom drawing. |
| | | // An empty implementation adversely affects performance during animation. |
| | | override func draw(_ rect: CGRect) { |
| | | // Drawing code |
| | | } |
| | | */ |
| | | |
| | | } |
New file |
| | |
| | | // |
| | | // WaterFallFlowLayout.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | |
| | | protocol WaterFallLayoutDelegate: NSObjectProtocol { |
| | | func waterFlowLayout(_ waterFlowLayout: WaterFallFlowLayout, itemHeight indexPath: IndexPath) -> CGFloat |
| | | } |
| | | |
| | | class WaterFallFlowLayout: UICollectionViewFlowLayout { |
| | | |
| | | weak var delegate: WaterFallLayoutDelegate? |
| | | // 列数 |
| | | var cols = 4 |
| | | // 布局数组 |
| | | fileprivate lazy var layoutAttributeArray: [UICollectionViewLayoutAttributes] = [] |
| | | // 高度数组 |
| | | fileprivate lazy var yArray: [CGFloat] = Array(repeating: self.sectionInset.top, count: cols) |
| | | |
| | | fileprivate var maxHeight: CGFloat = 0 |
| | | |
| | | override func prepare() { |
| | | super.prepare() |
| | | // 计算每个 Cell 的宽度 |
| | | let itemWidth = (collectionView!.bounds.width - sectionInset.left - sectionInset.right - minimumInteritemSpacing * CGFloat(cols - 1)) / CGFloat(cols) |
| | | // Cell 数量 |
| | | let itemCount = collectionView!.numberOfItems(inSection: 0) |
| | | // 最小高度索引 |
| | | var minHeightIndex = 0 |
| | | // 遍历 item 计算并缓存属性 |
| | | for i in layoutAttributeArray.count ..< itemCount { |
| | | let indexPath = IndexPath(item: i, section: 0) |
| | | let attr = UICollectionViewLayoutAttributes(forCellWith: indexPath) |
| | | // 获取动态高度 |
| | | let itemHeight = delegate?.waterFlowLayout(self, itemHeight: indexPath) |
| | | |
| | | // 找到高度最短的那一列 |
| | | let value = yArray.min() |
| | | // 获取数组索引 |
| | | minHeightIndex = yArray.firstIndex(of: value!)! |
| | | // 获取该列的 Y 坐标 |
| | | var itemY = yArray[minHeightIndex] |
| | | // 判断是否是第一行,如果换行需要加上行间距 |
| | | if i >= cols { |
| | | itemY += minimumInteritemSpacing |
| | | } |
| | | |
| | | // 计算该索引的 X 坐标 |
| | | let itemX = sectionInset.left + (itemWidth + minimumInteritemSpacing) * CGFloat(minHeightIndex) |
| | | // 赋值新的位置信息 |
| | | attr.frame = CGRect(x: itemX, y: itemY, width: itemWidth, height: CGFloat(itemHeight!)) |
| | | // 缓存布局属性 |
| | | layoutAttributeArray.append(attr) |
| | | // 更新最短高度列的数据 |
| | | yArray[minHeightIndex] = attr.frame.maxY |
| | | } |
| | | maxHeight = yArray.max()! + sectionInset.bottom |
| | | |
| | | } |
| | | } |
| | | |
| | | extension WaterFallFlowLayout { |
| | | |
| | | override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { |
| | | // 返回相交的区域 |
| | | return layoutAttributeArray.filter { |
| | | $0.frame.intersects(rect) |
| | | } |
| | | } |
| | | |
| | | override var collectionViewContentSize: CGSize { |
| | | return CGSize(width: collectionView!.bounds.width, height: maxHeight) |
| | | } |
| | | } |
New file |
| | |
| | | // |
| | | // PaymentView.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class PaymentView: UIView,JQNibView{ |
| | | |
| | | @IBOutlet weak var view_container: UIView! |
| | | @IBOutlet weak var cons_bottom: NSLayoutConstraint! |
| | | @IBOutlet weak var btn_wechat: UIButton! |
| | | @IBOutlet weak var btn_alipay: UIButton! |
| | | @IBOutlet weak var btn_coin: UIButton! |
| | | private var clouse:((Bool)->Void)? |
| | | private var payType:PayType? |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | |
| | | cons_bottom.constant = -(225 + UIDevice.jq_safeEdges.bottom) |
| | | alpha = 0 |
| | | layoutIfNeeded() |
| | | } |
| | | |
| | | static func show(_ clouse:@escaping (Bool)->Void){ |
| | | let paymentView = PaymentView.jq_loadNibView() |
| | | paymentView.frame = screnDelegate?.window?.frame ?? .zero |
| | | paymentView.clouse = clouse |
| | | screnDelegate?.window?.addSubview(paymentView) |
| | | paymentView.cons_bottom.constant = 0 |
| | | |
| | | UIView.animate(withDuration: 0.4) { |
| | | paymentView.alpha = 1 |
| | | paymentView.layoutIfNeeded() |
| | | } |
| | | } |
| | | |
| | | override func layoutSubviews() { |
| | | super.layoutSubviews() |
| | | view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20) |
| | | } |
| | | |
| | | |
| | | private func hidden(){ |
| | | cons_bottom.constant = -(225 + UIDevice.jq_safeEdges.bottom) |
| | | UIView.animate(withDuration: 0.4) { |
| | | self.alpha = 0 |
| | | self.layoutIfNeeded() |
| | | }completion: { _ in |
| | | self.removeFromSuperview() |
| | | } |
| | | } |
| | | |
| | | |
| | | @IBAction func tapAction(_ sender: UIButton) { |
| | | switch sender.tag{ |
| | | case 10: |
| | | payType = .wechat |
| | | case 11: |
| | | payType = .aliPay |
| | | case 12: |
| | | payType = .coin |
| | | default:break |
| | | } |
| | | |
| | | btn_alipay.isSelected = payType == .aliPay |
| | | btn_coin.isSelected = payType == .coin |
| | | btn_wechat.isSelected = payType == .wechat |
| | | } |
| | | |
| | | @IBAction func paymentAction(_ sender: UIButton) { |
| | | clouse?(true) |
| | | hidden() |
| | | } |
| | | |
| | | @IBAction func cancelAction(_ sender: UIButton) { |
| | | clouse?(false) |
| | | hidden() |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/> |
| | | <capability name="Named colors" minToolsVersion="9.0"/> |
| | | <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="PaymentView" customModule="WanPai" 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="I0g-vn-aAw"> |
| | | <rect key="frame" x="0.0" y="568" width="393" height="284"/> |
| | | <subviews> |
| | | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="6oz-tW-MFV"> |
| | | <rect key="frame" x="0.0" y="14" width="393" height="180"/> |
| | | <subviews> |
| | | <view tag="10" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ME6-yW-eFT"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="60"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="85J-Gs-279"> |
| | | <rect key="frame" x="14" y="59.666666666666629" width="365" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.10000000000000001" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.40000000000000002" id="gl2-oU-bb6"/> |
| | | </constraints> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_wechat" translatesAutoresizingMaskIntoConstraints="NO" id="ebE-DJ-8I3"> |
| | | <rect key="frame" x="15" y="21" width="28" height="29"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="28" id="86X-Av-fZ0"/> |
| | | <constraint firstAttribute="height" constant="29" id="iLy-aq-NEQ"/> |
| | | </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="i6n-Ae-j6X"> |
| | | <rect key="frame" x="55.999999999999993" y="26" width="65.333333333333314" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥ 0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nW3-BN-jAP"> |
| | | <rect key="frame" x="132.33333333333334" y="26" width="24.333333333333343" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <color key="textColor" red="0.93333333330000001" green="0.043137254899999998" blue="0.043137254899999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" tag="10" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iQH-s2-Sm4"> |
| | | <rect key="frame" x="354" y="23" width="25" height="25"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="btn_choose"/> |
| | | <state key="selected" image="btn_choose_s"/> |
| | | <connections> |
| | | <action selector="tapAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="69h-XB-sVX"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="ebE-DJ-8I3" firstAttribute="leading" secondItem="ME6-yW-eFT" secondAttribute="leading" constant="15" id="Af3-VT-brh"/> |
| | | <constraint firstItem="85J-Gs-279" firstAttribute="leading" secondItem="ME6-yW-eFT" secondAttribute="leading" constant="14" id="B23-gf-RAl"/> |
| | | <constraint firstItem="iQH-s2-Sm4" firstAttribute="centerY" secondItem="ebE-DJ-8I3" secondAttribute="centerY" id="E7x-NV-f4i"/> |
| | | <constraint firstItem="nW3-BN-jAP" firstAttribute="leading" secondItem="i6n-Ae-j6X" secondAttribute="trailing" constant="11" id="FIl-YR-osr"/> |
| | | <constraint firstAttribute="trailing" secondItem="85J-Gs-279" secondAttribute="trailing" constant="14" id="Ja7-qq-Ev5"/> |
| | | <constraint firstAttribute="bottom" secondItem="85J-Gs-279" secondAttribute="bottom" id="OVA-dy-dlW"/> |
| | | <constraint firstAttribute="trailing" secondItem="iQH-s2-Sm4" secondAttribute="trailing" constant="14" id="WBL-kA-O8S"/> |
| | | <constraint firstAttribute="bottom" secondItem="ebE-DJ-8I3" secondAttribute="bottom" constant="10" id="by2-ek-jxZ"/> |
| | | <constraint firstItem="i6n-Ae-j6X" firstAttribute="leading" secondItem="ebE-DJ-8I3" secondAttribute="trailing" constant="13" id="cgf-cv-60e"/> |
| | | <constraint firstAttribute="height" constant="60" id="dEq-ke-0B3"/> |
| | | <constraint firstItem="nW3-BN-jAP" firstAttribute="centerY" secondItem="ebE-DJ-8I3" secondAttribute="centerY" id="ed8-Ca-7EK"/> |
| | | <constraint firstItem="i6n-Ae-j6X" firstAttribute="centerY" secondItem="ebE-DJ-8I3" secondAttribute="centerY" id="rOZ-xN-WLo"/> |
| | | </constraints> |
| | | </view> |
| | | <view tag="11" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4Ft-AC-zgU"> |
| | | <rect key="frame" x="0.0" y="60" width="393" height="60"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HtX-dv-eVh"> |
| | | <rect key="frame" x="14" y="59.666666666666629" width="365" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.10000000000000001" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.40000000000000002" id="Xxh-qq-cdf"/> |
| | | </constraints> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_alipay" translatesAutoresizingMaskIntoConstraints="NO" id="JYg-cb-KpE"> |
| | | <rect key="frame" x="15" y="21" width="28" height="29"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="29" id="Mhe-Il-kNw"/> |
| | | <constraint firstAttribute="width" constant="28" id="m73-gY-yyc"/> |
| | | </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="GPB-fn-GC7"> |
| | | <rect key="frame" x="56.000000000000007" y="26" width="81.666666666666686" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥ 0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uCD-UF-eto"> |
| | | <rect key="frame" x="148.66666666666666" y="26" width="24.333333333333343" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <color key="textColor" red="0.93333333330000001" green="0.043137254899999998" blue="0.043137254899999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" tag="11" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WE2-FK-qOV"> |
| | | <rect key="frame" x="354" y="23" width="25" height="25"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="btn_choose"/> |
| | | <state key="selected" image="btn_choose_s"/> |
| | | <connections> |
| | | <action selector="tapAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="iX6-Ib-6Ho"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="GPB-fn-GC7" firstAttribute="leading" secondItem="JYg-cb-KpE" secondAttribute="trailing" constant="13" id="3ko-yZ-hu1"/> |
| | | <constraint firstAttribute="bottom" secondItem="HtX-dv-eVh" secondAttribute="bottom" id="9aR-c6-kyR"/> |
| | | <constraint firstItem="WE2-FK-qOV" firstAttribute="centerY" secondItem="JYg-cb-KpE" secondAttribute="centerY" id="9e6-08-YxV"/> |
| | | <constraint firstItem="JYg-cb-KpE" firstAttribute="leading" secondItem="4Ft-AC-zgU" secondAttribute="leading" constant="15" id="AG2-Ob-O24"/> |
| | | <constraint firstAttribute="trailing" secondItem="WE2-FK-qOV" secondAttribute="trailing" constant="14" id="B7B-gE-5PQ"/> |
| | | <constraint firstItem="uCD-UF-eto" firstAttribute="centerY" secondItem="JYg-cb-KpE" secondAttribute="centerY" id="Oyf-Wr-032"/> |
| | | <constraint firstAttribute="height" constant="60" id="QWd-8U-Ux7"/> |
| | | <constraint firstAttribute="trailing" secondItem="HtX-dv-eVh" secondAttribute="trailing" constant="14" id="R8q-j3-GRz"/> |
| | | <constraint firstAttribute="bottom" secondItem="JYg-cb-KpE" secondAttribute="bottom" constant="10" id="SAE-Yf-aoN"/> |
| | | <constraint firstItem="HtX-dv-eVh" firstAttribute="leading" secondItem="4Ft-AC-zgU" secondAttribute="leading" constant="14" id="hkU-XB-4sn"/> |
| | | <constraint firstItem="uCD-UF-eto" firstAttribute="leading" secondItem="GPB-fn-GC7" secondAttribute="trailing" constant="11" id="vBj-D6-9gr"/> |
| | | <constraint firstItem="GPB-fn-GC7" firstAttribute="centerY" secondItem="JYg-cb-KpE" secondAttribute="centerY" id="zm4-aw-Ycx"/> |
| | | </constraints> |
| | | </view> |
| | | <view tag="11" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="S7h-OF-RAr"> |
| | | <rect key="frame" x="0.0" y="120" width="393" height="60"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BOu-gk-wSG"> |
| | | <rect key="frame" x="14" y="59.666666666666629" width="365" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.10000000000000001" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.40000000000000002" id="HTz-zg-CUI"/> |
| | | </constraints> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_coin" translatesAutoresizingMaskIntoConstraints="NO" id="pIu-Ui-hVv"> |
| | | <rect key="frame" x="15" y="21" width="28" height="29"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="28" id="COa-hP-v2C"/> |
| | | <constraint firstAttribute="height" constant="29" id="i8N-st-goU"/> |
| | | </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="NGh-bI-So3"> |
| | | <rect key="frame" x="56.000000000000007" y="26" width="81.666666666666686" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0 币" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MfR-5x-oVT"> |
| | | <rect key="frame" x="148.66666666666666" y="26" width="30.666666666666657" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <color key="textColor" red="0.93333333330000001" green="0.043137254899999998" blue="0.043137254899999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" tag="12" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fBI-qy-chO"> |
| | | <rect key="frame" x="354" y="23" width="25" height="25"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="btn_choose"/> |
| | | <state key="selected" image="btn_choose_s"/> |
| | | <connections> |
| | | <action selector="tapAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="aVC-qg-CZ5"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="bottom" secondItem="pIu-Ui-hVv" secondAttribute="bottom" constant="10" id="0Ki-Ju-Jpj"/> |
| | | <constraint firstAttribute="height" constant="60" id="996-mw-jCm"/> |
| | | <constraint firstItem="fBI-qy-chO" firstAttribute="centerY" secondItem="pIu-Ui-hVv" secondAttribute="centerY" id="BQg-6W-x9e"/> |
| | | <constraint firstItem="MfR-5x-oVT" firstAttribute="centerY" secondItem="pIu-Ui-hVv" secondAttribute="centerY" id="FGz-B1-sWd"/> |
| | | <constraint firstAttribute="trailing" secondItem="fBI-qy-chO" secondAttribute="trailing" constant="14" id="H21-Wm-gFb"/> |
| | | <constraint firstItem="NGh-bI-So3" firstAttribute="centerY" secondItem="pIu-Ui-hVv" secondAttribute="centerY" id="LEY-Kv-OsM"/> |
| | | <constraint firstAttribute="trailing" secondItem="BOu-gk-wSG" secondAttribute="trailing" constant="14" id="b94-76-UwP"/> |
| | | <constraint firstItem="NGh-bI-So3" firstAttribute="leading" secondItem="pIu-Ui-hVv" secondAttribute="trailing" constant="13" id="dCw-V3-ygi"/> |
| | | <constraint firstAttribute="bottom" secondItem="BOu-gk-wSG" secondAttribute="bottom" id="fTh-JD-3CZ"/> |
| | | <constraint firstItem="MfR-5x-oVT" firstAttribute="leading" secondItem="NGh-bI-So3" secondAttribute="trailing" constant="11" id="p5G-4n-pWq"/> |
| | | <constraint firstItem="pIu-Ui-hVv" firstAttribute="leading" secondItem="S7h-OF-RAr" secondAttribute="leading" constant="15" id="uct-Lt-hOY"/> |
| | | <constraint firstItem="BOu-gk-wSG" firstAttribute="leading" secondItem="S7h-OF-RAr" secondAttribute="leading" constant="14" id="w5R-se-e6g"/> |
| | | </constraints> |
| | | </view> |
| | | </subviews> |
| | | </stackView> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="glt-oZ-fup"> |
| | | <rect key="frame" x="206.66666666666663" y="214" width="145.33333333333337" height="40"/> |
| | | <color key="backgroundColor" name="FE6E0D"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="JV7-c4-7tD"/> |
| | | </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="paymentAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="wbK-kY-nQV"/> |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ji4-B6-Ozw"> |
| | | <rect key="frame" x="41" y="214" width="145.66666666666666" height="40"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="Tyg-21-Wcc"/> |
| | | </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="取消"> |
| | | <color key="titleColor" name="FE6E0D"/> |
| | | </state> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="borderColor"> |
| | | <color key="value" name="FE6E0D"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="borderWidth"> |
| | | <real key="value" value="1"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="cancelAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="kHF-dd-7EQ"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="glt-oZ-fup" firstAttribute="top" secondItem="6oz-tW-MFV" secondAttribute="bottom" constant="20" id="1Rd-2A-3Om"/> |
| | | <constraint firstItem="glt-oZ-fup" firstAttribute="centerY" secondItem="Ji4-B6-Ozw" secondAttribute="centerY" id="56b-FJ-sPa"/> |
| | | <constraint firstAttribute="bottom" secondItem="glt-oZ-fup" secondAttribute="bottom" constant="30" id="8O5-IK-zdE"/> |
| | | <constraint firstItem="6oz-tW-MFV" firstAttribute="leading" secondItem="I0g-vn-aAw" secondAttribute="leading" id="Vry-cL-Ozh"/> |
| | | <constraint firstAttribute="trailing" secondItem="glt-oZ-fup" secondAttribute="trailing" constant="41" id="Y6w-lo-y9L"/> |
| | | <constraint firstItem="6oz-tW-MFV" firstAttribute="top" secondItem="I0g-vn-aAw" secondAttribute="top" constant="14" id="d7B-wh-Y6d"/> |
| | | <constraint firstItem="glt-oZ-fup" firstAttribute="width" secondItem="Ji4-B6-Ozw" secondAttribute="width" id="hWp-ml-tjt"/> |
| | | <constraint firstAttribute="trailing" secondItem="6oz-tW-MFV" secondAttribute="trailing" id="iYw-dH-wxl"/> |
| | | <constraint firstItem="glt-oZ-fup" firstAttribute="leading" secondItem="Ji4-B6-Ozw" secondAttribute="trailing" constant="20" id="maI-bo-p4K"/> |
| | | <constraint firstItem="Ji4-B6-Ozw" firstAttribute="leading" secondItem="I0g-vn-aAw" secondAttribute="leading" constant="41" id="obl-Lp-6y9"/> |
| | | </constraints> |
| | | </view> |
| | | </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="I0g-vn-aAw" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="2R0-2s-HGA"/> |
| | | <constraint firstAttribute="bottom" secondItem="I0g-vn-aAw" secondAttribute="bottom" id="9AD-6H-0r8"/> |
| | | <constraint firstAttribute="trailing" secondItem="I0g-vn-aAw" secondAttribute="trailing" id="j73-iu-DSn"/> |
| | | </constraints> |
| | | <connections> |
| | | <outlet property="btn_alipay" destination="WE2-FK-qOV" id="Keo-5R-2iV"/> |
| | | <outlet property="btn_coin" destination="fBI-qy-chO" id="W1f-WZ-xIJ"/> |
| | | <outlet property="btn_wechat" destination="iQH-s2-Sm4" id="pDO-q6-Iek"/> |
| | | <outlet property="cons_bottom" destination="9AD-6H-0r8" id="9hQ-qM-ZMJ"/> |
| | | <outlet property="view_container" destination="I0g-vn-aAw" id="i7z-aB-Zfq"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="btn_choose" width="25" height="25"/> |
| | | <image name="btn_choose_s" width="25" height="25"/> |
| | | <image name="icon_alipay" width="29" height="29"/> |
| | | <image name="icon_coin" width="28" height="28"/> |
| | | <image name="icon_wechat" width="28" height="29"/> |
| | | <namedColor name="FE6E0D"> |
| | | <color red="0.99599999189376831" green="0.4309999942779541" blue="0.050999999046325684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </namedColor> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
| | |
| | | import JQTools |
| | | |
| | | let Def_ThemeColor:UIColor = UIColor(hexStr: "#FD8802") |
| | | let Def_NavFontColor = UIColor(hexStr: "#FD8802") |
| | | let Def_NavFontColor = UIColor.black.withAlphaComponent(0.8) |
New file |
| | |
| | | // |
| | | // Enums.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/9. |
| | | // |
| | | |
| | | import Foundation |
| | | |
| | | enum PayType:Int{ |
| | | case aliPay = 0 |
| | | case wechat = 1 |
| | | case coin = 2 |
| | | } |
| | |
| | | |
| | | import UIKit |
| | | |
| | | let Def_NavFont:UIFont = UIFont.systemFont(ofSize: 16, weight: .medium) |
| | | let Def_NavFont:UIFont = UIFont.systemFont(ofSize: 18, weight: .medium) |
New file |
| | |
| | | // |
| | | // CourseVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class CourseVC: BaseVC { |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | view.backgroundColor = .jq_randomColor |
| | | } |
| | | |
| | | |
| | | /* |
| | | // MARK: - Navigation |
| | | |
| | | // In a storyboard-based application, you will often want to do a little preparation before navigation |
| | | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { |
| | | // Get the new view controller using segue.destination. |
| | | // Pass the selected object to the new view controller. |
| | | } |
| | | */ |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <dependencies> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CourseVC" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> |
| | | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | </view> |
| | | </objects> |
| | | </document> |
New file |
| | |
| | | // |
| | | // HomeCCell.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | |
| | | class HomeCCell: UICollectionViewCell { |
| | | |
| | | @IBOutlet weak var img: UIImageView! |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | // Initialization code |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/> |
| | | <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" id="gTV-IL-0wX" customClass="HomeCCell" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="357" height="416"/> |
| | | <autoresizingMask key="autoresizingMask"/> |
| | | <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> |
| | | <rect key="frame" x="0.0" y="0.0" width="357" height="416"/> |
| | | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="9vT-54-wYE"> |
| | | <rect key="frame" x="0.0" y="0.0" width="357" height="416"/> |
| | | </imageView> |
| | | </subviews> |
| | | </view> |
| | | <constraints> |
| | | <constraint firstAttribute="bottom" secondItem="9vT-54-wYE" secondAttribute="bottom" id="0i7-0w-x2D"/> |
| | | <constraint firstItem="9vT-54-wYE" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="KhX-UM-RO8"/> |
| | | <constraint firstAttribute="trailing" secondItem="9vT-54-wYE" secondAttribute="trailing" id="Q2V-xS-c4P"/> |
| | | <constraint firstItem="9vT-54-wYE" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="rbX-vZ-W3x"/> |
| | | </constraints> |
| | | <size key="customSize" width="357" height="416"/> |
| | | <connections> |
| | | <outlet property="img" destination="9vT-54-wYE" id="EfI-q1-XAg"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="293.89312977099235" y="149.29577464788733"/> |
| | | </collectionViewCell> |
| | | </objects> |
| | | </document> |
New file |
| | |
| | | // |
| | | // HomeVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | |
| | | class HomeVC: BaseVC { |
| | | |
| | | @IBOutlet weak var collectionView: UICollectionView! |
| | | |
| | | |
| | | private var layout:WaterFallFlowLayout! |
| | | private var items = Array<String>() |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | } |
| | | |
| | | |
| | | override func setUI() { |
| | | view.backgroundColor = UIColor(hexStr: "EEF0F3") |
| | | |
| | | layout = WaterFallFlowLayout() |
| | | layout.cols = 2 |
| | | layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34) |
| | | layout.delegate = self |
| | | collectionView.collectionViewLayout = layout |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.register(UINib(nibName: "HomeCCell", bundle: nil), forCellWithReuseIdentifier: "_HomeCCell") |
| | | |
| | | for index in 1...8{ |
| | | items.append("b_\(index)") |
| | | } |
| | | collectionView.reloadData() |
| | | } |
| | | |
| | | @IBAction func joinMemberAction(_ sender: UIButton) { |
| | | let joinMemberVC = JoinMemberIntroduceVC() |
| | | push(vc: joinMemberVC) |
| | | } |
| | | |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .lightContent |
| | | } |
| | | } |
| | | |
| | | extension HomeVC:UICollectionViewDelegate{ |
| | | |
| | | } |
| | | |
| | | extension HomeVC:UICollectionViewDataSource{ |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeCCell", for: indexPath) as! HomeCCell |
| | | cell.img.image = UIImage(named: items[indexPath.row]) |
| | | return cell |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | return items.count |
| | | } |
| | | |
| | | } |
| | | |
| | | extension HomeVC: WaterFallLayoutDelegate{ |
| | | func waterFlowLayout(_ waterFlowLayout: WaterFallFlowLayout, itemHeight indexPath: IndexPath) -> CGFloat { |
| | | if let tempImg = UIImage(named: items[indexPath.row]){ |
| | | let radio = tempImg.size.width / tempImg.size.height |
| | | if radio >= 0.8{ |
| | | return 185 |
| | | }else{ |
| | | return 288 |
| | | } |
| | | } |
| | | |
| | | return 288 |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/> |
| | | <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="HomeVC" customModule="WanPai" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="collectionView" destination="ysy-N3-BCh" id="3mf-b9-Tj4"/> |
| | | <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="WGQ-UH-Uvg"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="290.33333333333331"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_home" translatesAutoresizingMaskIntoConstraints="NO" id="l0X-uU-o8F"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="237.66666666666666"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" secondItem="l0X-uU-o8F" secondAttribute="height" multiplier="1:0.605" id="zJ9-xI-msc"/> |
| | | </constraints> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CWt-Cn-ccL"> |
| | | <rect key="frame" x="38" y="207.66666666666666" width="317" height="59.999999999999972"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_map" translatesAutoresizingMaskIntoConstraints="NO" id="0cp-Cu-32h"> |
| | | <rect key="frame" x="4" y="3" width="55" height="55"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" secondItem="0cp-Cu-32h" secondAttribute="height" multiplier="1:1" id="0Uj-am-gjP"/> |
| | | </constraints> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_arrow" translatesAutoresizingMaskIntoConstraints="NO" id="Q3K-qR-eSC"> |
| | | <rect key="frame" x="279" y="26" width="23" height="9"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="9" id="4i4-Rp-as9"/> |
| | | <constraint firstAttribute="width" constant="23" id="90D-DW-LT3"/> |
| | | </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="VD5-cz-3Fs"> |
| | | <rect key="frame" x="73" y="21" width="194" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.56999999999999995" colorSpace="calibratedRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="trailing" secondItem="Q3K-qR-eSC" secondAttribute="trailing" constant="15" id="4nL-oq-du4"/> |
| | | <constraint firstItem="Q3K-qR-eSC" firstAttribute="centerY" secondItem="0cp-Cu-32h" secondAttribute="centerY" id="6Lx-rc-l5r"/> |
| | | <constraint firstItem="VD5-cz-3Fs" firstAttribute="leading" secondItem="0cp-Cu-32h" secondAttribute="trailing" constant="14" id="73i-cc-eW6"/> |
| | | <constraint firstItem="0cp-Cu-32h" firstAttribute="top" secondItem="CWt-Cn-ccL" secondAttribute="top" constant="3" id="INE-T1-saw"/> |
| | | <constraint firstAttribute="bottom" secondItem="0cp-Cu-32h" secondAttribute="bottom" constant="2" id="Si9-c2-tQu"/> |
| | | <constraint firstAttribute="height" constant="60" id="pZv-yr-IEA"/> |
| | | <constraint firstItem="Q3K-qR-eSC" firstAttribute="leading" secondItem="VD5-cz-3Fs" secondAttribute="trailing" constant="12" id="rIr-ix-CFW"/> |
| | | <constraint firstItem="0cp-Cu-32h" firstAttribute="leading" secondItem="CWt-Cn-ccL" secondAttribute="leading" constant="4" id="vcf-jd-LTf"/> |
| | | <constraint firstItem="VD5-cz-3Fs" firstAttribute="centerY" secondItem="0cp-Cu-32h" secondAttribute="centerY" id="yH4-Bt-Vgp"/> |
| | | </constraints> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity"> |
| | | <real key="value" value="1"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="shadowColor"> |
| | | <color key="value" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset"> |
| | | <size key="value" width="0.0" height="2"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius"> |
| | | <real key="value" value="13"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius"> |
| | | <real key="value" value="13"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="NO"/> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Y4w-3W-3I4"> |
| | | <rect key="frame" x="18" y="126.66666666666669" width="206.33333333333334" height="43"/> |
| | | <string key="text">欢迎来到 快乐运动俱乐部 |
| | | 加入我们 成为会员</string> |
| | | <fontDescription key="fontDescription" type="system" pointSize="18"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Welcome!" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rlx-Vs-UDB"> |
| | | <rect key="frame" x="18.999999999999993" y="89.666666666666671" width="102.33333333333331" height="31"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="31" id="uJ5-bz-dlr"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="boldSystem" pointSize="22"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="poJ-Yp-Ex1"> |
| | | <rect key="frame" x="18" y="126.66666666666669" width="206.33333333333334" height="43"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <connections> |
| | | <action selector="joinMemberAction:" destination="-1" eventType="touchUpInside" id="wxy-tX-qp7"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="poJ-Yp-Ex1" firstAttribute="bottom" secondItem="Y4w-3W-3I4" secondAttribute="bottom" id="0dJ-Uy-p2O"/> |
| | | <constraint firstItem="l0X-uU-o8F" firstAttribute="leading" secondItem="WGQ-UH-Uvg" secondAttribute="leading" id="1As-Ff-Vb8"/> |
| | | <constraint firstItem="poJ-Yp-Ex1" firstAttribute="leading" secondItem="Y4w-3W-3I4" secondAttribute="leading" id="1no-qk-cqp"/> |
| | | <constraint firstItem="Y4w-3W-3I4" firstAttribute="leading" secondItem="WGQ-UH-Uvg" secondAttribute="leading" constant="18" id="4fW-84-sl4"/> |
| | | <constraint firstItem="poJ-Yp-Ex1" firstAttribute="trailing" secondItem="Y4w-3W-3I4" secondAttribute="trailing" id="ETv-qQ-Nj5"/> |
| | | <constraint firstAttribute="trailing" secondItem="l0X-uU-o8F" secondAttribute="trailing" id="H6K-8w-T50"/> |
| | | <constraint firstItem="l0X-uU-o8F" firstAttribute="top" secondItem="WGQ-UH-Uvg" secondAttribute="top" id="LhD-ha-3wJ"/> |
| | | <constraint firstItem="Rlx-Vs-UDB" firstAttribute="leading" secondItem="WGQ-UH-Uvg" secondAttribute="leading" constant="19" id="T3m-16-HD2"/> |
| | | <constraint firstAttribute="trailing" secondItem="CWt-Cn-ccL" secondAttribute="trailing" constant="38" id="W35-gE-yoZ"/> |
| | | <constraint firstAttribute="width" secondItem="WGQ-UH-Uvg" secondAttribute="height" multiplier="1:0.7384" id="ayQ-vi-dn2"/> |
| | | <constraint firstItem="poJ-Yp-Ex1" firstAttribute="top" secondItem="Y4w-3W-3I4" secondAttribute="top" id="c2v-L3-vtt"/> |
| | | <constraint firstItem="CWt-Cn-ccL" firstAttribute="leading" secondItem="WGQ-UH-Uvg" secondAttribute="leading" constant="38" id="fMC-5l-99c"/> |
| | | <constraint firstItem="Y4w-3W-3I4" firstAttribute="top" secondItem="Rlx-Vs-UDB" secondAttribute="bottom" constant="6" id="jcE-MI-qgw"/> |
| | | <constraint firstItem="CWt-Cn-ccL" firstAttribute="top" secondItem="l0X-uU-o8F" secondAttribute="bottom" constant="-30" id="qe2-5A-ExK"/> |
| | | <constraint firstItem="CWt-Cn-ccL" firstAttribute="top" secondItem="Y4w-3W-3I4" secondAttribute="bottom" constant="38" id="vwl-2A-Xaa"/> |
| | | </constraints> |
| | | </view> |
| | | <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="ysy-N3-BCh"> |
| | | <rect key="frame" x="0.0" y="290.33333333333331" width="393" height="527.66666666666674"/> |
| | | <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Hvc-jj-SAe"> |
| | | <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="ysy-N3-BCh" firstAttribute="top" secondItem="WGQ-UH-Uvg" secondAttribute="bottom" id="GWq-es-hPt"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="WGQ-UH-Uvg" secondAttribute="trailing" id="NHO-DL-gAi"/> |
| | | <constraint firstItem="ysy-N3-BCh" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="VDv-z1-iGx"/> |
| | | <constraint firstItem="WGQ-UH-Uvg" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="WOX-4y-Yuk"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="ysy-N3-BCh" secondAttribute="trailing" id="iny-tC-K46"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="ysy-N3-BCh" secondAttribute="bottom" id="jgP-5H-akR"/> |
| | | <constraint firstItem="WGQ-UH-Uvg" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="sgb-fE-wnZ"/> |
| | | </constraints> |
| | | <point key="canvasLocation" x="29.770992366412212" y="20.422535211267608"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="bg_home" width="390" height="236"/> |
| | | <image name="icon_arrow" width="23" height="9"/> |
| | | <image name="icon_map" width="55" height="55"/> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
New file |
| | |
| | | // |
| | | // JoinMemberIntroduceVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | import QMUIKit |
| | | |
| | | class JoinMemberIntroduceVC: BaseVC { |
| | | @IBOutlet weak var btn_join: QMUIButton! |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "成为会员" |
| | | |
| | | } |
| | | |
| | | override func setUI() { |
| | | btn_join.spacingBetweenImageAndTitle = 3 |
| | | btn_join.imagePosition = .left |
| | | } |
| | | |
| | | |
| | | @IBAction func joinAction(_ sender: QMUIButton) { |
| | | PaymentView.show { status in |
| | | let paymentState:PaymentResultVC.PaymentResult = status ? .success:.fail |
| | | let vc = PaymentResultVC(result: paymentState) |
| | | vc.modalPresentationStyle = .fullScreen |
| | | self.present(vc, animated: true) |
| | | |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/> |
| | | <capability name="Named colors" minToolsVersion="9.0"/> |
| | | <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="JoinMemberIntroduceVC" customModule="WanPai" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="btn_join" destination="GjB-uh-zMR" id="lhq-Ch-tAZ"/> |
| | | <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> |
| | | <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Hpl-hX-ZzE"> |
| | | <rect key="frame" x="0.0" y="59" width="393" height="759"/> |
| | | <wkWebViewConfiguration key="configuration"> |
| | | <audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/> |
| | | <wkPreferences key="preferences"/> |
| | | </wkWebViewConfiguration> |
| | | </wkWebView> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GjB-uh-zMR" customClass="QMUIButton"> |
| | | <rect key="frame" x="0.0" y="770" width="393" height="48"/> |
| | | <color key="backgroundColor" name="FE6E0D"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="48" id="cor-iv-k2L"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="加入年度会员" image="btn_add"> |
| | | <color key="titleColor" red="0.94901960784313721" green="0.97647058823529409" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="joinAction:" destination="-1" eventType="touchUpInside" id="vtO-Zw-2xW"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="Hpl-hX-ZzE" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="7VF-r3-Yar"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Hpl-hX-ZzE" secondAttribute="trailing" id="Ax7-HK-yi9"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="Hpl-hX-ZzE" secondAttribute="bottom" id="RiD-Rz-Uyy"/> |
| | | <constraint firstItem="GjB-uh-zMR" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="Uyd-nn-6X1"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="GjB-uh-zMR" secondAttribute="trailing" id="bdf-CQ-Uf4"/> |
| | | <constraint firstItem="Hpl-hX-ZzE" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="dce-pA-PVN"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="GjB-uh-zMR" secondAttribute="bottom" id="m0F-H8-e5w"/> |
| | | </constraints> |
| | | <point key="canvasLocation" x="138" y="21"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="btn_add" width="20" height="20"/> |
| | | <namedColor name="FE6E0D"> |
| | | <color red="0.99599999189376831" green="0.4309999942779541" blue="0.050999999046325684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </namedColor> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
New file |
| | |
| | | // |
| | | // LoginRegOrForgotVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | |
| | | class LoginRegOrForgotVC: BaseVC { |
| | | |
| | | enum UpdateType:String{ |
| | | case forgot = "忘记密码" |
| | | case update = "修改密码" |
| | | case register = "注册" |
| | | } |
| | | |
| | | |
| | | private var type:UpdateType! |
| | | |
| | | required init(type:UpdateType) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.type = type |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = type.rawValue |
| | | } |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .default |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/> |
| | | <capability name="Named colors" minToolsVersion="9.0"/> |
| | | <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="LoginRegOrForgotVC" customModule="WanPai" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_LOGO" translatesAutoresizingMaskIntoConstraints="NO" id="ju4-6O-Lwi"> |
| | | <rect key="frame" x="122.66666666666669" y="79" width="148" height="72"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="H0l-HL-WQ6"> |
| | | <rect key="frame" x="40" y="190" width="313" height="40"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_phone" translatesAutoresizingMaskIntoConstraints="NO" id="ksw-uN-X0q"> |
| | | <rect key="frame" x="31" y="11" width="16" height="18"/> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入手机号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="t2b-ES-vps" customClass="QMUITextField"> |
| | | <rect key="frame" x="75" y="0.0" width="228" height="40"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <textInputTraits key="textInputTraits" keyboardType="numberPad"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength"> |
| | | <integer key="value" value="11"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | | <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </textField> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstItem="t2b-ES-vps" firstAttribute="leading" secondItem="ksw-uN-X0q" secondAttribute="trailing" constant="28" id="1ls-IE-PHX"/> |
| | | <constraint firstItem="ksw-uN-X0q" firstAttribute="leading" secondItem="H0l-HL-WQ6" secondAttribute="leading" constant="31" id="48W-7t-nKb"/> |
| | | <constraint firstItem="t2b-ES-vps" firstAttribute="top" secondItem="H0l-HL-WQ6" secondAttribute="top" id="5Py-AC-nG8"/> |
| | | <constraint firstAttribute="trailing" secondItem="t2b-ES-vps" secondAttribute="trailing" constant="10" id="8na-8U-eKt"/> |
| | | <constraint firstAttribute="height" constant="40" id="9z5-Qt-ZGg"/> |
| | | <constraint firstItem="ksw-uN-X0q" firstAttribute="centerY" secondItem="H0l-HL-WQ6" secondAttribute="centerY" id="PiL-jy-PCF"/> |
| | | <constraint firstAttribute="bottom" secondItem="t2b-ES-vps" secondAttribute="bottom" id="QcC-TC-rhR"/> |
| | | </constraints> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AjG-PX-mug"> |
| | | <rect key="frame" x="40" y="250" width="313" height="40"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_code" translatesAutoresizingMaskIntoConstraints="NO" id="GmS-FY-i5D"> |
| | | <rect key="frame" x="31" y="11" width="15" height="18"/> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入验证码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="gNj-6t-p9o" customClass="QMUITextField"> |
| | | <rect key="frame" x="74" y="0.0" width="98" height="40"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <textInputTraits key="textInputTraits" spellCheckingType="no" keyboardType="numberPad" enablesReturnKeyAutomatically="YES" smartQuotesType="no"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength"> |
| | | <integer key="value" value="6"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | | <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </textField> |
| | | <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8ND-Q2-rU3"> |
| | | <rect key="frame" x="231" y="6.6666666666666856" width="62" height="27"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="获取验证码"> |
| | | <color key="titleColor" red="0.38823529410000002" green="0.74117647060000003" blue="0.85882352939999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="A8Z-NM-OhZ"/> |
| | | <constraint firstAttribute="trailing" secondItem="8ND-Q2-rU3" secondAttribute="trailing" constant="20" id="G90-A2-VBu"/> |
| | | <constraint firstItem="GmS-FY-i5D" firstAttribute="leading" secondItem="AjG-PX-mug" secondAttribute="leading" constant="31" id="N5S-wR-Zed"/> |
| | | <constraint firstItem="gNj-6t-p9o" firstAttribute="top" secondItem="AjG-PX-mug" secondAttribute="top" id="NEM-5g-CfC"/> |
| | | <constraint firstAttribute="bottom" secondItem="gNj-6t-p9o" secondAttribute="bottom" id="brJ-JF-o8b"/> |
| | | <constraint firstItem="gNj-6t-p9o" firstAttribute="leading" secondItem="GmS-FY-i5D" secondAttribute="trailing" constant="28" id="iqu-4E-pvB"/> |
| | | <constraint firstItem="8ND-Q2-rU3" firstAttribute="centerY" secondItem="AjG-PX-mug" secondAttribute="centerY" id="the-dX-IUr"/> |
| | | <constraint firstItem="GmS-FY-i5D" firstAttribute="centerY" secondItem="AjG-PX-mug" secondAttribute="centerY" id="vlJ-yW-mvX"/> |
| | | </constraints> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gqc-3H-F7Y"> |
| | | <rect key="frame" x="40" y="314" width="313" height="40"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_code" translatesAutoresizingMaskIntoConstraints="NO" id="DwZ-DK-k3H"> |
| | | <rect key="frame" x="31" y="11" width="15" height="18"/> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="xxp-hE-Y3y" customClass="QMUITextField"> |
| | | <rect key="frame" x="74" y="0.0" width="190" height="40"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <textInputTraits key="textInputTraits" spellCheckingType="no" keyboardType="alphabet" enablesReturnKeyAutomatically="YES" secureTextEntry="YES" smartQuotesType="no"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength"> |
| | | <integer key="value" value="30"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | | <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </textField> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aTn-ag-HTb"> |
| | | <rect key="frame" x="274" y="9" width="22" height="22"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="icon_login_eye_c"/> |
| | | <state key="selected" image="icon_login_eye"/> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstItem="aTn-ag-HTb" firstAttribute="leading" secondItem="xxp-hE-Y3y" secondAttribute="trailing" constant="10" id="0x7-Qk-1RR"/> |
| | | <constraint firstItem="aTn-ag-HTb" firstAttribute="centerY" secondItem="DwZ-DK-k3H" secondAttribute="centerY" id="ARk-CM-UR5"/> |
| | | <constraint firstItem="DwZ-DK-k3H" firstAttribute="leading" secondItem="gqc-3H-F7Y" secondAttribute="leading" constant="31" id="LTu-wD-daQ"/> |
| | | <constraint firstItem="DwZ-DK-k3H" firstAttribute="centerY" secondItem="gqc-3H-F7Y" secondAttribute="centerY" id="VaL-F6-Dzb"/> |
| | | <constraint firstItem="xxp-hE-Y3y" firstAttribute="leading" secondItem="DwZ-DK-k3H" secondAttribute="trailing" constant="28" id="Xhf-Ud-6Mn"/> |
| | | <constraint firstItem="xxp-hE-Y3y" firstAttribute="top" secondItem="gqc-3H-F7Y" secondAttribute="top" id="cOG-RP-AOA"/> |
| | | <constraint firstAttribute="trailing" secondItem="aTn-ag-HTb" secondAttribute="trailing" constant="17" id="mAG-ND-EAC"/> |
| | | <constraint firstAttribute="bottom" secondItem="xxp-hE-Y3y" secondAttribute="bottom" id="mou-7K-ymd"/> |
| | | <constraint firstAttribute="height" constant="40" id="sMw-Ms-giP"/> |
| | | </constraints> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vri-pP-hU6"> |
| | | <rect key="frame" x="100" y="393" width="193" height="40"/> |
| | | <color key="backgroundColor" name="FE6E0D"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="9Zu-bi-eqQ"/> |
| | | </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> |
| | | </button> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="vri-pP-hU6" firstAttribute="top" secondItem="gqc-3H-F7Y" secondAttribute="bottom" constant="39" id="1bl-mL-MaS"/> |
| | | <constraint firstItem="gqc-3H-F7Y" firstAttribute="trailing" secondItem="H0l-HL-WQ6" secondAttribute="trailing" id="27v-LX-ziP"/> |
| | | <constraint firstItem="ju4-6O-Lwi" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="5vk-us-g5I"/> |
| | | <constraint firstItem="H0l-HL-WQ6" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="40" id="6Ty-7f-3BQ"/> |
| | | <constraint firstItem="gqc-3H-F7Y" firstAttribute="leading" secondItem="H0l-HL-WQ6" secondAttribute="leading" id="7uk-b4-MBZ"/> |
| | | <constraint firstItem="H0l-HL-WQ6" firstAttribute="top" secondItem="ju4-6O-Lwi" secondAttribute="bottom" constant="39" id="8h5-5e-QFi"/> |
| | | <constraint firstItem="vri-pP-hU6" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="100" id="BaK-gW-Gtx"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="H0l-HL-WQ6" secondAttribute="trailing" constant="40" id="IaL-rX-bcc"/> |
| | | <constraint firstItem="AjG-PX-mug" firstAttribute="leading" secondItem="H0l-HL-WQ6" secondAttribute="leading" id="J9d-bS-7OG"/> |
| | | <constraint firstItem="vri-pP-hU6" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="Mmn-Zj-0z7"/> |
| | | <constraint firstItem="ju4-6O-Lwi" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="20" id="ZoS-rs-UOK"/> |
| | | <constraint firstItem="AjG-PX-mug" firstAttribute="trailing" secondItem="H0l-HL-WQ6" secondAttribute="trailing" id="aeA-76-2dC"/> |
| | | <constraint firstItem="H0l-HL-WQ6" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="bow-BN-4vw"/> |
| | | <constraint firstItem="AjG-PX-mug" firstAttribute="top" secondItem="H0l-HL-WQ6" secondAttribute="bottom" constant="20" id="ewl-qX-Y7E"/> |
| | | <constraint firstItem="gqc-3H-F7Y" firstAttribute="top" secondItem="AjG-PX-mug" secondAttribute="bottom" constant="24" id="mtp-Is-iBP"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="vri-pP-hU6" secondAttribute="trailing" constant="100" id="wnH-HW-tKv"/> |
| | | </constraints> |
| | | <point key="canvasLocation" x="140" y="21"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="icon_LOGO" width="148" height="72"/> |
| | | <image name="icon_login_code" width="15" height="18"/> |
| | | <image name="icon_login_eye" width="23" height="14"/> |
| | | <image name="icon_login_eye_c" width="22" height="9"/> |
| | | <image name="icon_login_phone" width="16" height="18"/> |
| | | <namedColor name="FE6E0D"> |
| | | <color red="0.99599999189376831" green="0.4309999942779541" blue="0.050999999046325684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </namedColor> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
New file |
| | |
| | | // |
| | | // LoginVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/6. |
| | | // |
| | | |
| | | import UIKit |
| | | import RxRelay |
| | | import QMUIKit |
| | | import JQTools |
| | | |
| | | private enum LoginType{ |
| | | case pwd,smsCode |
| | | } |
| | | |
| | | class LoginVC: BaseVC { |
| | | |
| | | @IBOutlet weak var btn_pwdLogin: UIButton! |
| | | @IBOutlet weak var btn_smsCodeLogin: UIButton! |
| | | |
| | | @IBOutlet weak var tf_phone: QMUITextField! |
| | | @IBOutlet weak var tf_verify: QMUITextField! |
| | | @IBOutlet weak var btn_getCode: UIButton! |
| | | @IBOutlet weak var btn_eye: UIButton! |
| | | @IBOutlet weak var btn_wechat: QMUIButton! |
| | | @IBOutlet weak var textView_treaty: UITextView! |
| | | @IBOutlet weak var btn_login: UIButton! |
| | | @IBOutlet weak var btn_register: UIButton! |
| | | @IBOutlet weak var cons_registerCenterX: NSLayoutConstraint! |
| | | @IBOutlet weak var cons_loginCenterX: NSLayoutConstraint! |
| | | |
| | | @IBOutlet weak var cons_loginWidth: NSLayoutConstraint! |
| | | private let loginType = BehaviorRelay<LoginType>(value: .pwd) |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | } |
| | | |
| | | override func setUI() { |
| | | btn_wechat.imagePosition = .top |
| | | btn_wechat.spacingBetweenImageAndTitle = 8 |
| | | |
| | | |
| | | textView_treaty.isEditable = false |
| | | let paragraphStyle = NSMutableParagraphStyle() |
| | | paragraphStyle.lineBreakMode = NSLineBreakMode.byCharWrapping |
| | | |
| | | let content = "我已阅读并同意《隐私协议》《用户协议》《运动安全告知书》" |
| | | let attribute = NSMutableAttributedString(string: content) |
| | | attribute.addAttributes([NSAttributedString.Key.link:URL(string: "tip://treaty")!], range: content.jq_subRange("《隐私协议》")!) |
| | | attribute.addAttributes([NSAttributedString.Key.link:URL(string: "tip://user")!], range: content.jq_subRange("《用户协议》")!) |
| | | attribute.addAttributes([NSAttributedString.Key.link:URL(string: "tip://sportSafety")!], range: content.jq_subRange("《运动安全告知书》")!) |
| | | attribute.addAttributes([.paragraphStyle:paragraphStyle], range: _NSRange(location: 0, length: content.count)) |
| | | self.textView_treaty.attributedText = attribute |
| | | self.textView_treaty.delegate = self |
| | | } |
| | | |
| | | override func setRx() { |
| | | loginType.subscribe(onNext: { [weak self] type in |
| | | guard let weakSelf = self else {return} |
| | | weakSelf.tf_verify.text = "" |
| | | weakSelf.btn_getCode.isHidden = type == .pwd |
| | | weakSelf.btn_eye.isHidden = type == .smsCode |
| | | switch type { |
| | | case .pwd: |
| | | weakSelf.tf_verify.isSecureTextEntry = !weakSelf.btn_eye.isSelected |
| | | weakSelf.tf_verify.keyboardType = .default |
| | | weakSelf.tf_verify.maximumTextLength = 30 |
| | | weakSelf.tf_verify.placeholder = "请输入密码" |
| | | case .smsCode: |
| | | weakSelf.tf_verify.isSecureTextEntry = false |
| | | weakSelf.tf_verify.keyboardType = .numberPad |
| | | weakSelf.tf_verify.maximumTextLength = 6 |
| | | weakSelf.tf_verify.placeholder = "请输入验证码" |
| | | } |
| | | |
| | | }).disposed(by: disposeBag) |
| | | |
| | | } |
| | | |
| | | @IBAction func exchangeLoginTypeAction(_ sender: UIButton) { |
| | | btn_pwdLogin.isSelected = sender.tag == 10 |
| | | btn_smsCodeLogin.isSelected = sender.tag == 11 |
| | | let type:LoginType = sender.tag == 10 ? .pwd:.smsCode |
| | | loginType.accept(type) |
| | | |
| | | cons_registerCenterX.constant = btn_pwdLogin.isSelected ? -82:0 |
| | | cons_loginCenterX.constant = btn_pwdLogin.isSelected ? 82:0 |
| | | cons_loginWidth.constant = btn_pwdLogin.isSelected ? 144:189 |
| | | |
| | | let str = btn_pwdLogin.isSelected ? "登录":"注册/登录" |
| | | |
| | | UIView.animate(withDuration: 0.4) { |
| | | self.view.layoutIfNeeded() |
| | | self.btn_login.setTitle(str, for: .normal) |
| | | } |
| | | |
| | | } |
| | | |
| | | @IBAction func eyeAction(_ sender: UIButton) { |
| | | sender.isSelected = !sender.isSelected |
| | | if loginType.value == .pwd{ |
| | | tf_verify.isSecureTextEntry = !sender.isSelected |
| | | } |
| | | } |
| | | |
| | | |
| | | @IBAction func loginAction(_ sender: UIButton) { |
| | | let snapView = screnDelegate?.window?.snapshotView(afterScreenUpdates: true) |
| | | |
| | | let tabBar = BaseTabBarVC() |
| | | let homeNav = BaseNav(rootViewController: HomeVC()) |
| | | homeNav.tabBarItem = UITabBarItem(title: "加入玩湃", image: UIImage(named: "tabbar_home"), selectedImage: UIImage(named: "tabbar_home_s")) |
| | | |
| | | let clouseNav = BaseNav(rootViewController: CourseVC()) |
| | | clouseNav.tabBarItem = UITabBarItem(title: "开始上课", image: UIImage(named: "tabbar_course"), selectedImage: UIImage(named: "tabbar_course_s")) |
| | | |
| | | let welfareVCNav = BaseNav(rootViewController: WelfareVC()) |
| | | welfareVCNav.tabBarItem = UITabBarItem(title: "使用福利", image: UIImage(named: "tabbar_welfare"), selectedImage: UIImage(named: "tabbar_welfare_s")) |
| | | |
| | | let searchVCNav = BaseNav(rootViewController: SearchVC()) |
| | | searchVCNav.tabBarItem = UITabBarItem(title: "搜索玩湃", image: UIImage(named: "tabbar_search"), selectedImage: UIImage(named: "tabbar_search_s")) |
| | | |
| | | |
| | | tabBar.viewControllers = [homeNav,clouseNav,welfareVCNav,searchVCNav] |
| | | |
| | | |
| | | screnDelegate?.window?.rootViewController = tabBar |
| | | screnDelegate?.window?.rootViewController?.view.addSubview(snapView!) |
| | | screnDelegate?.window?.makeKeyAndVisible() |
| | | |
| | | |
| | | UIView.animate(withDuration: 1.5) { |
| | | snapView?.alpha = 0 |
| | | snapView?.transform3D = CATransform3DMakeScale(1.5, 1.5, 1.5) |
| | | } completion: { _ in |
| | | snapView?.removeFromSuperview() |
| | | } |
| | | } |
| | | |
| | | |
| | | @IBAction func updatePwdAction(_ sender: UIButton) { |
| | | let vc = LoginRegOrForgotVC(type: .update) |
| | | push(vc: vc) |
| | | } |
| | | |
| | | @IBAction func forgotPwdAction(_ sender: UIButton) { |
| | | let vc = LoginRegOrForgotVC(type: .forgot) |
| | | push(vc: vc) |
| | | } |
| | | |
| | | @IBAction func registerAction(_ sender: UIButton) { |
| | | let vc = LoginRegOrForgotVC(type: .register) |
| | | push(vc: vc) |
| | | } |
| | | |
| | | |
| | | @IBAction func readAgreentAction(_ sender: UIButton) { |
| | | sender.isSelected = !sender.isSelected |
| | | } |
| | | |
| | | @IBAction func wechatLoginAcion(_ sender: QMUIButton) { |
| | | |
| | | CommonAlertView.show(title: "提示", content: "11231231231231231") |
| | | |
| | | } |
| | | |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .default |
| | | } |
| | | } |
| | | |
| | | extension LoginVC:UITextViewDelegate{ |
| | | func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { |
| | | if #available(iOS 16.0, *) { |
| | | if let str = URL.host(percentEncoded: true){ |
| | | switch str { |
| | | case "treaty": |
| | | AgreentView.show(type: .privacy) |
| | | case "user": |
| | | AgreentView.show(type: .user) |
| | | case "sportSafety": |
| | | AgreentView.show(type: .safe) |
| | | default:break |
| | | } |
| | | return true |
| | | } |
| | | } else { |
| | | // Fallback on earlier versions |
| | | } |
| | | return false |
| | | } |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/> |
| | | <capability name="Named colors" minToolsVersion="9.0"/> |
| | | <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="LoginVC" customModule="WanPai" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="btn_eye" destination="bft-9v-fd2" id="6lv-dX-cmp"/> |
| | | <outlet property="btn_getCode" destination="Peu-H2-2Bj" id="Tos-ZB-3it"/> |
| | | <outlet property="btn_login" destination="NQ0-2r-DbZ" id="0lx-ai-KGD"/> |
| | | <outlet property="btn_pwdLogin" destination="fEr-ZJ-pMj" id="adD-fy-ix2"/> |
| | | <outlet property="btn_register" destination="A58-cL-JDg" id="6oc-zY-p32"/> |
| | | <outlet property="btn_smsCodeLogin" destination="Bgw-Aw-FZm" id="Jde-9o-6wl"/> |
| | | <outlet property="btn_wechat" destination="AA4-J4-8iR" id="Rdp-vy-GdD"/> |
| | | <outlet property="cons_loginCenterX" destination="J5m-nY-42E" id="2NA-d1-PIL"/> |
| | | <outlet property="cons_loginWidth" destination="MTM-NH-2de" id="0Sc-uM-zMe"/> |
| | | <outlet property="cons_registerCenterX" destination="kcA-1H-itW" id="Uhx-AG-p46"/> |
| | | <outlet property="textView_treaty" destination="BqB-Az-Ez1" id="zWC-fQ-SsK"/> |
| | | <outlet property="tf_phone" destination="dXR-3c-p7o" id="7Dm-0N-TNe"/> |
| | | <outlet property="tf_verify" destination="yYG-aW-Yzi" id="v9Z-15-f29"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_LOGO" translatesAutoresizingMaskIntoConstraints="NO" id="38m-zi-L1d"> |
| | | <rect key="frame" x="122.66666666666669" y="79" width="148" height="72"/> |
| | | </imageView> |
| | | <stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cAB-q2-f9Z"> |
| | | <rect key="frame" x="113.33333333333333" y="183" width="166.66666666666669" height="25"/> |
| | | <subviews> |
| | | <button opaque="NO" tag="10" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fEr-ZJ-pMj"> |
| | | <rect key="frame" x="0.0" y="0.0" width="74" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="密码登录"> |
| | | <color key="titleColor" name="515151"/> |
| | | </state> |
| | | <state key="selected"> |
| | | <color key="titleColor" name="FE6E0D"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="exchangeLoginTypeAction:" destination="-1" eventType="touchUpInside" id="12W-6X-lBL"/> |
| | | </connections> |
| | | </button> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="|" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QH3-h0-THD"> |
| | | <rect key="frame" x="74.000000000000014" y="0.0" width="18.666666666666671" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> |
| | | <color key="textColor" name="FE6E0D"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" tag="11" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bgw-Aw-FZm"> |
| | | <rect key="frame" x="92.666666666666686" y="0.0" width="74" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="短信登录"> |
| | | <color key="titleColor" name="515151"/> |
| | | </state> |
| | | <state key="selected"> |
| | | <color key="titleColor" name="FE6E0D"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="exchangeLoginTypeAction:" destination="-1" eventType="touchUpInside" id="yXg-QX-GZ4"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="25" id="xeG-sS-w3k"/> |
| | | </constraints> |
| | | </stackView> |
| | | <stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ej3-Zy-UxP"> |
| | | <rect key="frame" x="140.33333333333334" y="351" width="112.33333333333334" height="25"/> |
| | | <subviews> |
| | | <button opaque="NO" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hI1-WH-dqa"> |
| | | <rect key="frame" x="0.0" y="0.0" width="50" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="修改密码"> |
| | | <color key="titleColor" name="515151"/> |
| | | </state> |
| | | <state key="selected"> |
| | | <color key="titleColor" name="FE6E0D"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="updatePwdAction:" destination="-1" eventType="touchUpInside" id="Emz-nv-NYG"/> |
| | | </connections> |
| | | </button> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="|" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pxy-q7-vhk"> |
| | | <rect key="frame" x="50" y="0.0" width="12.333333333333336" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <color key="textColor" name="FE6E0D"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="anK-cQ-sSd"> |
| | | <rect key="frame" x="62.333333333333314" y="0.0" width="50" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="忘记密码"> |
| | | <color key="titleColor" name="FE6E0D"/> |
| | | </state> |
| | | <state key="selected"> |
| | | <color key="titleColor" name="FE6E0D"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="forgotPwdAction:" destination="-1" eventType="touchUpInside" id="Ifr-lU-p7J"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="25" id="fsW-mR-FHo"/> |
| | | </constraints> |
| | | </stackView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ixo-tJ-9cE"> |
| | | <rect key="frame" x="40" y="238" width="313" height="40"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_phone" translatesAutoresizingMaskIntoConstraints="NO" id="HXD-J5-UNt"> |
| | | <rect key="frame" x="31" y="11" width="16" height="18"/> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入手机号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="dXR-3c-p7o" customClass="QMUITextField"> |
| | | <rect key="frame" x="75" y="0.0" width="228" height="40"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <textInputTraits key="textInputTraits" keyboardType="numberPad"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength"> |
| | | <integer key="value" value="11"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | | <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </textField> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.96470588235294119" green="0.96470588235294119" blue="0.96470588235294119" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="8k3-YG-84m"/> |
| | | <constraint firstItem="HXD-J5-UNt" firstAttribute="leading" secondItem="ixo-tJ-9cE" secondAttribute="leading" constant="31" id="LYf-PT-yCY"/> |
| | | <constraint firstAttribute="trailing" secondItem="dXR-3c-p7o" secondAttribute="trailing" constant="10" id="crG-8x-lY4"/> |
| | | <constraint firstItem="dXR-3c-p7o" firstAttribute="top" secondItem="ixo-tJ-9cE" secondAttribute="top" id="ctp-CL-yYd"/> |
| | | <constraint firstItem="HXD-J5-UNt" firstAttribute="centerY" secondItem="ixo-tJ-9cE" secondAttribute="centerY" id="tAB-wj-wWR"/> |
| | | <constraint firstItem="dXR-3c-p7o" firstAttribute="leading" secondItem="HXD-J5-UNt" secondAttribute="trailing" constant="28" id="wdm-3k-ttt"/> |
| | | <constraint firstAttribute="bottom" secondItem="dXR-3c-p7o" secondAttribute="bottom" id="xLe-cn-XTJ"/> |
| | | </constraints> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1LE-kf-RCn"> |
| | | <rect key="frame" x="40" y="298" width="313" height="40"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_code" translatesAutoresizingMaskIntoConstraints="NO" id="0Nl-D8-jVF"> |
| | | <rect key="frame" x="31" y="11" width="15" height="18"/> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="yYG-aW-Yzi" customClass="QMUITextField"> |
| | | <rect key="frame" x="74" y="0.0" width="190" height="40"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <textInputTraits key="textInputTraits" spellCheckingType="no" keyboardType="alphabet" enablesReturnKeyAutomatically="YES" secureTextEntry="YES" smartQuotesType="no"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength"> |
| | | <integer key="value" value="11"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | | <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </textField> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bft-9v-fd2"> |
| | | <rect key="frame" x="274" y="9" width="22" height="22"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="icon_login_eye_c"/> |
| | | <state key="selected" image="icon_login_eye"/> |
| | | <connections> |
| | | <action selector="eyeAction:" destination="-1" eventType="touchUpInside" id="tAb-bY-w9Q"/> |
| | | </connections> |
| | | </button> |
| | | <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Peu-H2-2Bj"> |
| | | <rect key="frame" x="231" y="6.6666666666666856" width="62" height="27"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="获取验证码"> |
| | | <color key="titleColor" red="0.38823529411764707" green="0.74117647058823533" blue="0.85882352941176465" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstItem="0Nl-D8-jVF" firstAttribute="leading" secondItem="1LE-kf-RCn" secondAttribute="leading" constant="31" id="0di-OZ-7cb"/> |
| | | <constraint firstItem="bft-9v-fd2" firstAttribute="centerY" secondItem="0Nl-D8-jVF" secondAttribute="centerY" id="1fW-nw-j1L"/> |
| | | <constraint firstItem="yYG-aW-Yzi" firstAttribute="leading" secondItem="0Nl-D8-jVF" secondAttribute="trailing" constant="28" id="DTC-n0-FXH"/> |
| | | <constraint firstAttribute="trailing" secondItem="Peu-H2-2Bj" secondAttribute="trailing" constant="20" id="G0A-B4-LL9"/> |
| | | <constraint firstItem="bft-9v-fd2" firstAttribute="leading" secondItem="yYG-aW-Yzi" secondAttribute="trailing" constant="10" id="M9d-MT-Vu5"/> |
| | | <constraint firstItem="yYG-aW-Yzi" firstAttribute="top" secondItem="1LE-kf-RCn" secondAttribute="top" id="NlC-lV-gcr"/> |
| | | <constraint firstAttribute="height" constant="40" id="Vlt-Kr-Hnl"/> |
| | | <constraint firstAttribute="trailing" secondItem="bft-9v-fd2" secondAttribute="trailing" constant="17" id="ZCV-Hr-1WF"/> |
| | | <constraint firstItem="Peu-H2-2Bj" firstAttribute="centerY" secondItem="1LE-kf-RCn" secondAttribute="centerY" id="nLX-2P-LLJ"/> |
| | | <constraint firstItem="0Nl-D8-jVF" firstAttribute="centerY" secondItem="1LE-kf-RCn" secondAttribute="centerY" id="nru-Vh-7U0"/> |
| | | <constraint firstAttribute="bottom" secondItem="yYG-aW-Yzi" secondAttribute="bottom" id="y4n-O8-i1l"/> |
| | | </constraints> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="A58-cL-JDg"> |
| | | <rect key="frame" x="42.666666666666657" y="404" width="144" height="40"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="y9B-Xu-Q5i"/> |
| | | </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="注册"> |
| | | <color key="titleColor" name="FE6E0D"/> |
| | | </state> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="ld_borderColorXIB"> |
| | | <color key="value" name="FE6E0D"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_borderWidthXIB"> |
| | | <real key="value" value="1"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="registerAction:" destination="-1" eventType="touchUpInside" id="LZ3-jL-IGj"/> |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NQ0-2r-DbZ"> |
| | | <rect key="frame" x="206.66666666666663" y="404" width="144" height="40"/> |
| | | <color key="backgroundColor" name="FE6E0D"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="144" id="MTM-NH-2de"/> |
| | | <constraint firstAttribute="height" constant="40" id="jrh-JX-bIa"/> |
| | | </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="登录"> |
| | | <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="loginAction:" destination="-1" eventType="touchUpInside" id="w5q-4Z-SHK"/> |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jpR-VA-PYM"> |
| | | <rect key="frame" x="42" y="464" width="20" height="22"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="22" id="2ZC-Li-D7d"/> |
| | | <constraint firstAttribute="width" constant="20" id="rRu-Ef-yCE"/> |
| | | </constraints> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="btn_select_u"/> |
| | | <state key="selected" image="btn_select"/> |
| | | <connections> |
| | | <action selector="readAgreentAction:" destination="-1" eventType="touchUpInside" id="c55-Qk-ocI"/> |
| | | </connections> |
| | | </button> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mZh-Vi-57o"> |
| | | <rect key="frame" x="0.0" y="499" width="393" height="319"/> |
| | | <subviews> |
| | | <stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ikk-sm-4Sm"> |
| | | <rect key="frame" x="146.66666666666666" y="179" width="100" height="50"/> |
| | | <subviews> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="AA4-J4-8iR" customClass="QMUIButton"> |
| | | <rect key="frame" x="0.0" y="0.0" width="100" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="微信登录" image="btn_wechat"> |
| | | <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="wechatLoginAcion:" destination="-1" eventType="touchUpInside" id="YOh-qo-ygR"/> |
| | | </connections> |
| | | </button> |
| | | </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="cqp-2p-rC6"> |
| | | <rect key="frame" x="159.66666666666666" y="147" width="73.666666666666657" height="17"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="17" id="DBH-wO-NS0"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <color key="textColor" red="0.70196078431372544" green="0.70196078431372544" blue="0.70196078431372544" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="ikk-sm-4Sm" firstAttribute="centerX" secondItem="cqp-2p-rC6" secondAttribute="centerX" id="0xX-m5-mrX"/> |
| | | <constraint firstAttribute="bottom" secondItem="ikk-sm-4Sm" secondAttribute="bottom" constant="90" id="egz-uu-9vA"/> |
| | | <constraint firstItem="ikk-sm-4Sm" firstAttribute="top" secondItem="cqp-2p-rC6" secondAttribute="bottom" constant="15" id="m32-Te-28i"/> |
| | | <constraint firstItem="ikk-sm-4Sm" firstAttribute="centerX" secondItem="mZh-Vi-57o" secondAttribute="centerX" id="sxJ-Mz-EGJ"/> |
| | | </constraints> |
| | | </view> |
| | | <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" text="我已阅读并同意《隐私协议》《用户协议》《运动安全告知书》" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="BqB-Az-Ez1"> |
| | | <rect key="frame" x="64" y="459" width="287" height="35"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="35" id="rzR-7J-NJs"/> |
| | | </constraints> |
| | | <color key="textColor" systemColor="labelColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> |
| | | </textView> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="Ej3-Zy-UxP" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="06n-Gd-wg4"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="mZh-Vi-57o" secondAttribute="trailing" id="5PZ-du-NJ4"/> |
| | | <constraint firstItem="cAB-q2-f9Z" firstAttribute="top" secondItem="38m-zi-L1d" secondAttribute="bottom" constant="32" id="BJR-4U-Mqg"/> |
| | | <constraint firstItem="1LE-kf-RCn" firstAttribute="leading" secondItem="ixo-tJ-9cE" secondAttribute="leading" id="C94-6l-8Sz"/> |
| | | <constraint firstItem="NQ0-2r-DbZ" firstAttribute="centerY" secondItem="A58-cL-JDg" secondAttribute="centerY" id="ELW-lb-UMU"/> |
| | | <constraint firstItem="cAB-q2-f9Z" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="F8y-Ql-6Fl"/> |
| | | <constraint firstItem="NQ0-2r-DbZ" firstAttribute="width" secondItem="A58-cL-JDg" secondAttribute="width" id="GKs-an-eCI"/> |
| | | <constraint firstItem="NQ0-2r-DbZ" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" constant="82" id="J5m-nY-42E"/> |
| | | <constraint firstItem="1LE-kf-RCn" firstAttribute="trailing" secondItem="ixo-tJ-9cE" secondAttribute="trailing" id="LYX-CC-Ine"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="BqB-Az-Ez1" secondAttribute="trailing" constant="42" id="MWC-RO-gsY"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="mZh-Vi-57o" secondAttribute="bottom" id="MWu-3v-W4I"/> |
| | | <constraint firstItem="mZh-Vi-57o" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="T42-Uk-S6N"/> |
| | | <constraint firstItem="ixo-tJ-9cE" firstAttribute="top" secondItem="cAB-q2-f9Z" secondAttribute="bottom" constant="30" id="THc-e6-Bko"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="ixo-tJ-9cE" secondAttribute="trailing" constant="40" id="TzU-Nh-o64"/> |
| | | <constraint firstItem="jpR-VA-PYM" firstAttribute="top" secondItem="A58-cL-JDg" secondAttribute="bottom" constant="20" id="Ujc-Kg-bWe"/> |
| | | <constraint firstItem="mZh-Vi-57o" firstAttribute="top" secondItem="BqB-Az-Ez1" secondAttribute="bottom" constant="5" id="dMK-2O-N4o"/> |
| | | <constraint firstItem="1LE-kf-RCn" firstAttribute="top" secondItem="ixo-tJ-9cE" secondAttribute="bottom" constant="20" id="h5h-2F-FmM"/> |
| | | <constraint firstItem="38m-zi-L1d" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="20" id="iPe-ep-hvl"/> |
| | | <constraint firstItem="A58-cL-JDg" firstAttribute="top" secondItem="Ej3-Zy-UxP" secondAttribute="bottom" constant="28" id="j1g-QM-Spl"/> |
| | | <constraint firstItem="A58-cL-JDg" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" constant="-82" id="kcA-1H-itW"/> |
| | | <constraint firstItem="Ej3-Zy-UxP" firstAttribute="top" secondItem="1LE-kf-RCn" secondAttribute="bottom" constant="13" id="lu7-1L-Dgy"/> |
| | | <constraint firstItem="38m-zi-L1d" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="vTc-mW-ZlI"/> |
| | | <constraint firstItem="jpR-VA-PYM" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="42" id="vWq-ms-r59"/> |
| | | <constraint firstItem="BqB-Az-Ez1" firstAttribute="leading" secondItem="jpR-VA-PYM" secondAttribute="trailing" constant="2" id="wEr-Lg-muD"/> |
| | | <constraint firstItem="ixo-tJ-9cE" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="40" id="wT0-yN-RM8"/> |
| | | <constraint firstItem="jpR-VA-PYM" firstAttribute="top" secondItem="BqB-Az-Ez1" secondAttribute="top" constant="5" id="x9D-NQ-ac9"/> |
| | | </constraints> |
| | | <point key="canvasLocation" x="136.64122137404578" y="20.422535211267608"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="btn_select" width="20" height="20"/> |
| | | <image name="btn_select_u" width="20" height="20"/> |
| | | <image name="btn_wechat" width="50" height="50"/> |
| | | <image name="icon_LOGO" width="148" height="72"/> |
| | | <image name="icon_login_code" width="15" height="18"/> |
| | | <image name="icon_login_eye" width="23" height="14"/> |
| | | <image name="icon_login_eye_c" width="22" height="9"/> |
| | | <image name="icon_login_phone" width="16" height="18"/> |
| | | <namedColor name="515151"> |
| | | <color red="0.31799998879432678" green="0.31799998879432678" blue="0.31799998879432678" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </namedColor> |
| | | <namedColor name="FE6E0D"> |
| | | <color red="0.99599999189376831" green="0.4309999942779541" blue="0.050999999046325684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </namedColor> |
| | | <systemColor name="labelColor"> |
| | | <color red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </systemColor> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
New file |
| | |
| | | // |
| | | // CouponCCell.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | |
| | | class CouponCCell: UICollectionViewCell { |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | // Initialization code |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/> |
| | | <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" id="gTV-IL-0wX" customClass="CouponCCell" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="417" height="123"/> |
| | | <autoresizingMask key="autoresizingMask"/> |
| | | <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> |
| | | <rect key="frame" x="0.0" y="0.0" width="417" height="123"/> |
| | | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mnx-Jv-DFb"> |
| | | <rect key="frame" x="14" y="10" width="389" height="103"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="1000" verticalHuggingPriority="251" image="icon_coupon_header" translatesAutoresizingMaskIntoConstraints="NO" id="OKL-S9-8uc"> |
| | | <rect key="frame" x="0.0" y="0.0" width="100" height="103"/> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_coupon_footer" translatesAutoresizingMaskIntoConstraints="NO" id="s4d-Hy-Gra"> |
| | | <rect key="frame" x="100" y="0.0" width="289" height="103"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0元" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="943-VV-dPw"> |
| | | <rect key="frame" x="5" y="5" width="90" height="93"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="24"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OYF-uW-SFs"> |
| | | <rect key="frame" x="115" y="18" width="16.333333333333343" height="25"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="25" id="hj7-hG-ZQC"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="3" translatesAutoresizingMaskIntoConstraints="NO" id="tzt-Qb-9Zd"> |
| | | <rect key="frame" x="115.00000000000001" y="46" width="60.666666666666671" height="37"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="满--元可用" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gEm-JU-PoK"> |
| | | <rect key="frame" x="0.0" y="0.0" width="60.666666666666664" height="17"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="17" id="YNJ-Sa-gNn"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="有效期至--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7Qw-dg-xym"> |
| | | <rect key="frame" x="0.0" y="20" width="60.666666666666664" height="17"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="17" id="aQU-SY-iID"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | </stackView> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DLn-XT-0Qj"> |
| | | <rect key="frame" x="319" y="40" width="61" height="23"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="61" id="fb9-Ui-Jxu"/> |
| | | <constraint firstAttribute="height" constant="23" id="uWO-P5-dgm"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="查看详情"> |
| | | <color key="titleColor" red="0.99215686274509807" green="0.52941176470588236" blue="0.0078431372549019607" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="1"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="jq_xibCornerRadius"> |
| | | <real key="value" value="2"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="tzt-Qb-9Zd" firstAttribute="top" secondItem="OYF-uW-SFs" secondAttribute="bottom" constant="3" id="3T7-Gn-mJc"/> |
| | | <constraint firstItem="tzt-Qb-9Zd" firstAttribute="leading" secondItem="OYF-uW-SFs" secondAttribute="leading" id="5Xl-ko-The"/> |
| | | <constraint firstAttribute="trailing" secondItem="s4d-Hy-Gra" secondAttribute="trailing" id="7Pe-n1-Bgi"/> |
| | | <constraint firstItem="OKL-S9-8uc" firstAttribute="leading" secondItem="mnx-Jv-DFb" secondAttribute="leading" id="8o8-p8-KaY"/> |
| | | <constraint firstItem="943-VV-dPw" firstAttribute="top" secondItem="OKL-S9-8uc" secondAttribute="top" constant="5" id="CYz-xI-ZqO"/> |
| | | <constraint firstItem="OYF-uW-SFs" firstAttribute="top" secondItem="mnx-Jv-DFb" secondAttribute="top" constant="18" id="Hju-WD-yhZ"/> |
| | | <constraint firstItem="s4d-Hy-Gra" firstAttribute="top" secondItem="mnx-Jv-DFb" secondAttribute="top" id="MJ4-G1-ATN"/> |
| | | <constraint firstItem="OYF-uW-SFs" firstAttribute="leading" secondItem="OKL-S9-8uc" secondAttribute="trailing" constant="15" id="MXj-wy-eU3"/> |
| | | <constraint firstAttribute="bottom" secondItem="OKL-S9-8uc" secondAttribute="bottom" id="Nc3-7H-Jib"/> |
| | | <constraint firstAttribute="trailing" secondItem="DLn-XT-0Qj" secondAttribute="trailing" constant="9" id="ONW-N8-KWx"/> |
| | | <constraint firstItem="943-VV-dPw" firstAttribute="trailing" secondItem="OKL-S9-8uc" secondAttribute="trailing" constant="-5" id="WDa-vh-Zz9"/> |
| | | <constraint firstItem="s4d-Hy-Gra" firstAttribute="leading" secondItem="OKL-S9-8uc" secondAttribute="trailing" id="bZg-Yq-qYQ"/> |
| | | <constraint firstItem="OKL-S9-8uc" firstAttribute="top" secondItem="mnx-Jv-DFb" secondAttribute="top" id="ctI-2Y-KVB"/> |
| | | <constraint firstItem="DLn-XT-0Qj" firstAttribute="centerY" secondItem="943-VV-dPw" secondAttribute="centerY" id="fg2-s8-8hM"/> |
| | | <constraint firstItem="943-VV-dPw" firstAttribute="bottom" secondItem="OKL-S9-8uc" secondAttribute="bottom" constant="-5" id="gDi-cg-pJq"/> |
| | | <constraint firstAttribute="bottom" secondItem="s4d-Hy-Gra" secondAttribute="bottom" id="pBu-iF-fVd"/> |
| | | <constraint firstItem="943-VV-dPw" firstAttribute="leading" secondItem="OKL-S9-8uc" secondAttribute="leading" constant="5" id="zzE-HG-7TH"/> |
| | | </constraints> |
| | | </view> |
| | | </subviews> |
| | | </view> |
| | | <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> |
| | | <constraints> |
| | | <constraint firstAttribute="bottom" secondItem="mnx-Jv-DFb" secondAttribute="bottom" constant="10" id="3cB-eS-ZPb"/> |
| | | <constraint firstItem="mnx-Jv-DFb" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="14" id="JbK-3A-8yF"/> |
| | | <constraint firstAttribute="trailing" secondItem="mnx-Jv-DFb" secondAttribute="trailing" constant="14" id="LAi-Gn-60b"/> |
| | | <constraint firstItem="mnx-Jv-DFb" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="10" id="jcL-zh-Hb4"/> |
| | | </constraints> |
| | | <size key="customSize" width="417" height="123"/> |
| | | <point key="canvasLocation" x="319.84732824427482" y="44.014084507042256"/> |
| | | </collectionViewCell> |
| | | </objects> |
| | | <resources> |
| | | <image name="icon_coupon_footer" width="262" height="100"/> |
| | | <image name="icon_coupon_header" width="100" height="100"/> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
New file |
| | |
| | | // |
| | | // PaymentResultVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class PaymentResultVC: BaseVC { |
| | | |
| | | enum PaymentResult{case success,fail} |
| | | |
| | | |
| | | @IBOutlet weak var img_paymentState: UIImageView! |
| | | @IBOutlet weak var label_content: UILabel! |
| | | @IBOutlet weak var collectionView: UICollectionView! |
| | | @IBOutlet weak var btn_backHome: UIButton! |
| | | @IBOutlet weak var btn_again: UIButton! |
| | | @IBOutlet weak var btn_back: UIButton! |
| | | |
| | | private var result:PaymentResult! |
| | | |
| | | required init(result:PaymentResult) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.result = result |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "成为会员" |
| | | |
| | | btn_again.isHidden = result == .success |
| | | btn_back.isHidden = result == .success |
| | | btn_backHome.isHidden = result == .fail |
| | | collectionView.isHidden = result == .fail |
| | | |
| | | switch result { |
| | | case .fail: |
| | | img_paymentState.image = UIImage(named: "icon_fail") |
| | | label_content.text = "支付失败,这是失败原因!" |
| | | case .success: |
| | | img_paymentState.image = UIImage(named: "icon_success") |
| | | label_content.text = "支付成功,恭喜您成为玩湃会员!并获得优惠券!" |
| | | case .none:break |
| | | } |
| | | |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.contentInset = UIEdgeInsets(top: 0, left: 14, bottom: 0, right: 14) |
| | | collectionView.register(UINib(nibName: "CouponCCell", bundle: nil), forCellWithReuseIdentifier: "_CouponCCell") |
| | | } |
| | | |
| | | @IBAction func paymentAgainAction(_ sender: UIButton) { |
| | | |
| | | } |
| | | |
| | | |
| | | @IBAction func backAction(_ sender: UIButton) { |
| | | dismiss(animated: true) |
| | | } |
| | | } |
| | | |
| | | extension PaymentResultVC:UICollectionViewDelegate{ |
| | | |
| | | } |
| | | |
| | | extension PaymentResultVC:UICollectionViewDataSource{ |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | return 5 |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_CouponCCell", for: indexPath) as! CouponCCell |
| | | return cell |
| | | } |
| | | |
| | | } |
| | | |
| | | extension PaymentResultVC:UICollectionViewDelegateFlowLayout{ |
| | | 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 5 |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { |
| | | return CGSize(width: JQ_ScreenW, height: 110) |
| | | } |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/> |
| | | <capability name="Named colors" minToolsVersion="9.0"/> |
| | | <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="PaymentResultVC" customModule="WanPai" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="btn_again" destination="Puy-qr-lEb" id="ivp-V2-TLE"/> |
| | | <outlet property="btn_back" destination="Lh5-H4-LBg" id="qWq-aq-38a"/> |
| | | <outlet property="btn_backHome" destination="meY-wl-nNE" id="apQ-VS-afU"/> |
| | | <outlet property="collectionView" destination="6ci-0V-ZT4" id="BTE-zu-4xN"/> |
| | | <outlet property="img_paymentState" destination="Fv7-HV-ioC" id="kvE-hr-cVH"/> |
| | | <outlet property="label_content" destination="RK0-X7-xSS" id="lD8-Jd-A6o"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_success" translatesAutoresizingMaskIntoConstraints="NO" id="Fv7-HV-ioC"> |
| | | <rect key="frame" x="176.66666666666666" y="108" width="40" height="40"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="支付成功,恭喜您成为玩湃会员!并获得优惠券!" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RK0-X7-xSS"> |
| | | <rect key="frame" x="39.333333333333343" y="168" width="314.33333333333326" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Puy-qr-lEb"> |
| | | <rect key="frame" x="206.66666666666663" y="239" width="145.33333333333337" height="40"/> |
| | | <color key="backgroundColor" name="FE6E0D"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="Sck-36-Bvo"/> |
| | | </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="number" keyPath="cornerRadius"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="paymentAgainAction:" destination="-1" eventType="touchUpInside" id="upo-4e-3CK"/> |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Lh5-H4-LBg"> |
| | | <rect key="frame" x="41" y="239" width="145.66666666666666" height="40"/> |
| | | <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="eFd-1o-twz"/> |
| | | </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="返回"> |
| | | <color key="titleColor" name="FE6E0D"/> |
| | | </state> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="borderColor"> |
| | | <color key="value" name="FE6E0D"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="borderWidth"> |
| | | <real key="value" value="1"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius"> |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="backAction:" destination="-1" eventType="touchUpInside" id="jV4-km-MpA"/> |
| | | </connections> |
| | | </button> |
| | | <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="6ci-0V-ZT4"> |
| | | <rect key="frame" x="0.0" y="228" width="393" height="471"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="7br-70-TUT"> |
| | | <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> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="meY-wl-nNE"> |
| | | <rect key="frame" x="149" y="709" width="95" height="38"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="95" id="5rh-Ui-gwV"/> |
| | | <constraint firstAttribute="height" constant="38" id="nHo-hR-hM3"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <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.36862745098039218" green="0.36862745098039218" blue="0.36862745098039218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="jq_xibBorderWidth"> |
| | | <real key="value" value="1"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="jq_xibBorderColor"> |
| | | <color key="value" red="0.83921568627450982" green="0.83529411764705885" blue="0.83529411764705885" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </userDefinedRuntimeAttribute> |
| | | <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> |
| | | <real key="value" value="2"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="backAction:" destination="-1" eventType="touchUpInside" id="4GW-1U-42J"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="6ci-0V-ZT4" secondAttribute="trailing" id="5Yg-0m-KVU"/> |
| | | <constraint firstItem="Puy-qr-lEb" firstAttribute="width" secondItem="Lh5-H4-LBg" secondAttribute="width" id="6Ej-a1-YEW"/> |
| | | <constraint firstItem="RK0-X7-xSS" firstAttribute="top" secondItem="Fv7-HV-ioC" secondAttribute="bottom" constant="20" id="6Ii-mh-axn"/> |
| | | <constraint firstItem="Lh5-H4-LBg" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="41" id="76U-vk-a1r"/> |
| | | <constraint firstItem="Fv7-HV-ioC" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="49" id="Fj8-kC-rK8"/> |
| | | <constraint firstItem="meY-wl-nNE" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="JNm-aR-XPU"/> |
| | | <constraint firstItem="Puy-qr-lEb" firstAttribute="top" secondItem="Lh5-H4-LBg" secondAttribute="top" id="LTz-7E-ixS"/> |
| | | <constraint firstItem="6ci-0V-ZT4" firstAttribute="top" secondItem="RK0-X7-xSS" secondAttribute="bottom" constant="43" id="SRc-4G-F63"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="meY-wl-nNE" secondAttribute="bottom" constant="71" id="UnI-Ey-Pc1"/> |
| | | <constraint firstItem="RK0-X7-xSS" firstAttribute="centerX" secondItem="Fv7-HV-ioC" secondAttribute="centerX" id="XBX-DI-MSD"/> |
| | | <constraint firstItem="meY-wl-nNE" firstAttribute="top" secondItem="6ci-0V-ZT4" secondAttribute="bottom" constant="10" id="Y9C-4j-R40"/> |
| | | <constraint firstItem="Fv7-HV-ioC" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="aaQ-gG-s1W"/> |
| | | <constraint firstItem="Puy-qr-lEb" firstAttribute="leading" secondItem="Lh5-H4-LBg" secondAttribute="trailing" constant="20" id="ayk-fO-rlg"/> |
| | | <constraint firstItem="6ci-0V-ZT4" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="gBF-6S-2xb"/> |
| | | <constraint firstItem="Puy-qr-lEb" firstAttribute="top" secondItem="RK0-X7-xSS" secondAttribute="bottom" constant="54" id="hHF-Uh-qJK"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Puy-qr-lEb" secondAttribute="trailing" constant="41" id="quk-KF-5Kt"/> |
| | | </constraints> |
| | | <point key="canvasLocation" x="104" y="21"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="icon_success" width="40" height="40"/> |
| | | <namedColor name="FE6E0D"> |
| | | <color red="0.99599999189376831" green="0.4309999942779541" blue="0.050999999046325684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </namedColor> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
New file |
| | |
| | | // |
| | | // SearchVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class SearchVC: BaseVC { |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | view.backgroundColor = .jq_randomColor |
| | | } |
| | | |
| | | |
| | | /* |
| | | // MARK: - Navigation |
| | | |
| | | // In a storyboard-based application, you will often want to do a little preparation before navigation |
| | | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { |
| | | // Get the new view controller using segue.destination. |
| | | // Pass the selected object to the new view controller. |
| | | } |
| | | */ |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <dependencies> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SearchVC" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> |
| | | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | </view> |
| | | </objects> |
| | | </document> |
New file |
| | |
| | | // |
| | | // WelfareVC.swift |
| | | // WanPai |
| | | // |
| | | // Created by 杨锴 on 2023/6/8. |
| | | // |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class WelfareVC: BaseVC { |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | view.backgroundColor = .jq_randomColor |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <dependencies> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="WelfareVC" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> |
| | | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | </view> |
| | | </objects> |
| | | </document> |
| | |
| | | guard let windowScene = (scene as? UIWindowScene) else { return } |
| | | window = UIWindow(windowScene: windowScene) |
| | | window?.frame = windowScene.coordinateSpace.bounds |
| | | let nav = BaseNav(rootViewController: LoginVC()) |
| | | let nav = LoginNav(rootViewController: LoginVC()) |
| | | window?.rootViewController = nav |
| | | window?.makeKeyAndVisible() |
| | | |
| | | if #available(iOS 13.0, *) { |
| | | self.window?.overrideUserInterfaceStyle = .light |
| | | } |
| | | |
| | | } |
| | | |