处理kbpayvip
This commit is contained in:
@@ -229,8 +229,6 @@
|
|||||||
04E038E92F20E877002CA5A0 /* DeepgramStreamingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E038E52F20E877002CA5A0 /* DeepgramStreamingManager.m */; };
|
04E038E92F20E877002CA5A0 /* DeepgramStreamingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E038E52F20E877002CA5A0 /* DeepgramStreamingManager.m */; };
|
||||||
04E038EF2F21F0EC002CA5A0 /* AiVM.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E038EE2F21F0EC002CA5A0 /* AiVM.m */; };
|
04E038EF2F21F0EC002CA5A0 /* AiVM.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E038EE2F21F0EC002CA5A0 /* AiVM.m */; };
|
||||||
04E0394B2F236E75002CA5A0 /* KBChatUserMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E0394A2F236E75002CA5A0 /* KBChatUserMessageCell.m */; };
|
04E0394B2F236E75002CA5A0 /* KBChatUserMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E0394A2F236E75002CA5A0 /* KBChatUserMessageCell.m */; };
|
||||||
0F2A10032F3C0001002CA5A0 /* KBChatMessageActionPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2A10022F3C0001002CA5A0 /* KBChatMessageActionPopView.m */; };
|
|
||||||
0F2A10132F3C0002002CA5A0 /* KBAIPersonaSidebarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2A10122F3C0002002CA5A0 /* KBAIPersonaSidebarView.m */; };
|
|
||||||
04E0394C2F236E75002CA5A0 /* KBChatTimeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E039482F236E75002CA5A0 /* KBChatTimeCell.m */; };
|
04E0394C2F236E75002CA5A0 /* KBChatTimeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E039482F236E75002CA5A0 /* KBChatTimeCell.m */; };
|
||||||
04E0394D2F236E75002CA5A0 /* KBChatAssistantMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E039432F236E75002CA5A0 /* KBChatAssistantMessageCell.m */; };
|
04E0394D2F236E75002CA5A0 /* KBChatAssistantMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E039432F236E75002CA5A0 /* KBChatAssistantMessageCell.m */; };
|
||||||
04E0394E2F236E75002CA5A0 /* KBChatTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E039452F236E75002CA5A0 /* KBChatTableView.m */; };
|
04E0394E2F236E75002CA5A0 /* KBChatTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E039452F236E75002CA5A0 /* KBChatTableView.m */; };
|
||||||
@@ -240,6 +238,9 @@
|
|||||||
04E0B2022F300002002CA5A0 /* KBVoiceRecordManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E0B2012F300002002CA5A0 /* KBVoiceRecordManager.m */; };
|
04E0B2022F300002002CA5A0 /* KBVoiceRecordManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E0B2012F300002002CA5A0 /* KBVoiceRecordManager.m */; };
|
||||||
04E161832F10E6470022C23B /* normal_hei_them.zip in Resources */ = {isa = PBXBuildFile; fileRef = 04E161812F10E6470022C23B /* normal_hei_them.zip */; };
|
04E161832F10E6470022C23B /* normal_hei_them.zip in Resources */ = {isa = PBXBuildFile; fileRef = 04E161812F10E6470022C23B /* normal_hei_them.zip */; };
|
||||||
04E161842F10E6470022C23B /* normal_them.zip in Resources */ = {isa = PBXBuildFile; fileRef = 04E161822F10E6470022C23B /* normal_them.zip */; };
|
04E161842F10E6470022C23B /* normal_them.zip in Resources */ = {isa = PBXBuildFile; fileRef = 04E161822F10E6470022C23B /* normal_them.zip */; };
|
||||||
|
04F4C0AA2F32274000E8F08C /* KBPayMainVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 04F4C0A92F32274000E8F08C /* KBPayMainVC.m */; };
|
||||||
|
04F4C0AD2F32288600E8F08C /* KBPaySvipVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 04F4C0AC2F32288600E8F08C /* KBPaySvipVC.m */; };
|
||||||
|
04F4C0B02F322EF200E8F08C /* PagingViewTableHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04F4C0AF2F322EF200E8F08C /* PagingViewTableHeaderView.m */; };
|
||||||
04FC95672EB0546C007BD342 /* KBKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC95652EB0546C007BD342 /* KBKey.m */; };
|
04FC95672EB0546C007BD342 /* KBKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC95652EB0546C007BD342 /* KBKey.m */; };
|
||||||
04FC956A2EB05497007BD342 /* KBKeyButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC95692EB05497007BD342 /* KBKeyButton.m */; };
|
04FC956A2EB05497007BD342 /* KBKeyButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC95692EB05497007BD342 /* KBKeyButton.m */; };
|
||||||
04FC956D2EB054B7007BD342 /* KBKeyboardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC956C2EB054B7007BD342 /* KBKeyboardView.m */; };
|
04FC956D2EB054B7007BD342 /* KBKeyboardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC956C2EB054B7007BD342 /* KBKeyboardView.m */; };
|
||||||
@@ -273,6 +274,8 @@
|
|||||||
04FEDC422F00040000999999 /* KBKeyboardSubscriptionFeatureMarqueeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FEDC412F00040000999999 /* KBKeyboardSubscriptionFeatureMarqueeView.m */; };
|
04FEDC422F00040000999999 /* KBKeyboardSubscriptionFeatureMarqueeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FEDC412F00040000999999 /* KBKeyboardSubscriptionFeatureMarqueeView.m */; };
|
||||||
05A1B2D12F5B1A2B3C4D5E60 /* KBSearchVM.m in Sources */ = {isa = PBXBuildFile; fileRef = 05A1B2C52F5B1A2B3C4D5E60 /* KBSearchVM.m */; };
|
05A1B2D12F5B1A2B3C4D5E60 /* KBSearchVM.m in Sources */ = {isa = PBXBuildFile; fileRef = 05A1B2C52F5B1A2B3C4D5E60 /* KBSearchVM.m */; };
|
||||||
05A1B2D22F5B1A2B3C4D5E60 /* KBSearchThemeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 05A1B2C72F5B1A2B3C4D5E60 /* KBSearchThemeModel.m */; };
|
05A1B2D22F5B1A2B3C4D5E60 /* KBSearchThemeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 05A1B2C72F5B1A2B3C4D5E60 /* KBSearchThemeModel.m */; };
|
||||||
|
0F2A10032F3C0001002CA5A0 /* KBChatMessageActionPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2A10022F3C0001002CA5A0 /* KBChatMessageActionPopView.m */; };
|
||||||
|
0F2A10132F3C0002002CA5A0 /* KBAIPersonaSidebarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2A10122F3C0002002CA5A0 /* KBAIPersonaSidebarView.m */; };
|
||||||
471CAD3574798685B72ADD55 /* KBMyTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 180D662EC4DB3A7FFF83FF18 /* KBMyTheme.m */; };
|
471CAD3574798685B72ADD55 /* KBMyTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 180D662EC4DB3A7FFF83FF18 /* KBMyTheme.m */; };
|
||||||
49B63DBAEE9076C591E13D68 /* KBShopThemeTagModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E2A844CD2D8584596DBE6316 /* KBShopThemeTagModel.m */; };
|
49B63DBAEE9076C591E13D68 /* KBShopThemeTagModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E2A844CD2D8584596DBE6316 /* KBShopThemeTagModel.m */; };
|
||||||
550CB2630FA4A7B4B9782EFA /* KBMyTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 180D662EC4DB3A7FFF83FF18 /* KBMyTheme.m */; };
|
550CB2630FA4A7B4B9782EFA /* KBMyTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 180D662EC4DB3A7FFF83FF18 /* KBMyTheme.m */; };
|
||||||
@@ -564,8 +567,6 @@
|
|||||||
048FFD1C2F277486005D62AE /* KBChatHistoryPageModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatHistoryPageModel.m; sourceTree = "<group>"; };
|
048FFD1C2F277486005D62AE /* KBChatHistoryPageModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatHistoryPageModel.m; sourceTree = "<group>"; };
|
||||||
048FFD222F28A836005D62AE /* KBChatLimitPopView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBChatLimitPopView.h; sourceTree = "<group>"; };
|
048FFD222F28A836005D62AE /* KBChatLimitPopView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBChatLimitPopView.h; sourceTree = "<group>"; };
|
||||||
048FFD232F28A836005D62AE /* KBChatLimitPopView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatLimitPopView.m; sourceTree = "<group>"; };
|
048FFD232F28A836005D62AE /* KBChatLimitPopView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatLimitPopView.m; sourceTree = "<group>"; };
|
||||||
0F2A10112F3C0002002CA5A0 /* KBAIPersonaSidebarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBAIPersonaSidebarView.h; sourceTree = "<group>"; };
|
|
||||||
0F2A10122F3C0002002CA5A0 /* KBAIPersonaSidebarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBAIPersonaSidebarView.m; sourceTree = "<group>"; };
|
|
||||||
048FFD252F28C6CF005D62AE /* KBImagePositionButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBImagePositionButton.h; sourceTree = "<group>"; };
|
048FFD252F28C6CF005D62AE /* KBImagePositionButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBImagePositionButton.h; sourceTree = "<group>"; };
|
||||||
048FFD262F28C6CF005D62AE /* KBImagePositionButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBImagePositionButton.m; sourceTree = "<group>"; };
|
048FFD262F28C6CF005D62AE /* KBImagePositionButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBImagePositionButton.m; sourceTree = "<group>"; };
|
||||||
048FFD282F28E99A005D62AE /* KBCommentModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCommentModel.h; sourceTree = "<group>"; };
|
048FFD282F28E99A005D62AE /* KBCommentModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCommentModel.h; sourceTree = "<group>"; };
|
||||||
@@ -724,8 +725,6 @@
|
|||||||
04E039482F236E75002CA5A0 /* KBChatTimeCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatTimeCell.m; sourceTree = "<group>"; };
|
04E039482F236E75002CA5A0 /* KBChatTimeCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatTimeCell.m; sourceTree = "<group>"; };
|
||||||
04E039492F236E75002CA5A0 /* KBChatUserMessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBChatUserMessageCell.h; sourceTree = "<group>"; };
|
04E039492F236E75002CA5A0 /* KBChatUserMessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBChatUserMessageCell.h; sourceTree = "<group>"; };
|
||||||
04E0394A2F236E75002CA5A0 /* KBChatUserMessageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatUserMessageCell.m; sourceTree = "<group>"; };
|
04E0394A2F236E75002CA5A0 /* KBChatUserMessageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatUserMessageCell.m; sourceTree = "<group>"; };
|
||||||
0F2A10012F3C0001002CA5A0 /* KBChatMessageActionPopView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBChatMessageActionPopView.h; sourceTree = "<group>"; };
|
|
||||||
0F2A10022F3C0001002CA5A0 /* KBChatMessageActionPopView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatMessageActionPopView.m; sourceTree = "<group>"; };
|
|
||||||
04E039502F2387D2002CA5A0 /* KBAiChatMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBAiChatMessage.h; sourceTree = "<group>"; };
|
04E039502F2387D2002CA5A0 /* KBAiChatMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBAiChatMessage.h; sourceTree = "<group>"; };
|
||||||
04E039512F2387D2002CA5A0 /* KBAiChatMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBAiChatMessage.m; sourceTree = "<group>"; };
|
04E039512F2387D2002CA5A0 /* KBAiChatMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBAiChatMessage.m; sourceTree = "<group>"; };
|
||||||
04E0B1002F300001002CA5A0 /* KBVoiceToTextManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBVoiceToTextManager.h; sourceTree = "<group>"; };
|
04E0B1002F300001002CA5A0 /* KBVoiceToTextManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBVoiceToTextManager.h; sourceTree = "<group>"; };
|
||||||
@@ -734,6 +733,12 @@
|
|||||||
04E0B2012F300002002CA5A0 /* KBVoiceRecordManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBVoiceRecordManager.m; sourceTree = "<group>"; };
|
04E0B2012F300002002CA5A0 /* KBVoiceRecordManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBVoiceRecordManager.m; sourceTree = "<group>"; };
|
||||||
04E161812F10E6470022C23B /* normal_hei_them.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = normal_hei_them.zip; sourceTree = "<group>"; };
|
04E161812F10E6470022C23B /* normal_hei_them.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = normal_hei_them.zip; sourceTree = "<group>"; };
|
||||||
04E161822F10E6470022C23B /* normal_them.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = normal_them.zip; sourceTree = "<group>"; };
|
04E161822F10E6470022C23B /* normal_them.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = normal_them.zip; sourceTree = "<group>"; };
|
||||||
|
04F4C0A82F32274000E8F08C /* KBPayMainVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBPayMainVC.h; sourceTree = "<group>"; };
|
||||||
|
04F4C0A92F32274000E8F08C /* KBPayMainVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBPayMainVC.m; sourceTree = "<group>"; };
|
||||||
|
04F4C0AB2F32288600E8F08C /* KBPaySvipVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBPaySvipVC.h; sourceTree = "<group>"; };
|
||||||
|
04F4C0AC2F32288600E8F08C /* KBPaySvipVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBPaySvipVC.m; sourceTree = "<group>"; };
|
||||||
|
04F4C0AE2F322EF200E8F08C /* PagingViewTableHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PagingViewTableHeaderView.h; sourceTree = "<group>"; };
|
||||||
|
04F4C0AF2F322EF200E8F08C /* PagingViewTableHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PagingViewTableHeaderView.m; sourceTree = "<group>"; };
|
||||||
04FC953A2EAFAE56007BD342 /* KeyBoardPrefixHeader.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyBoardPrefixHeader.pch; sourceTree = "<group>"; };
|
04FC953A2EAFAE56007BD342 /* KeyBoardPrefixHeader.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyBoardPrefixHeader.pch; sourceTree = "<group>"; };
|
||||||
04FC95642EB0546C007BD342 /* KBKey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBKey.h; sourceTree = "<group>"; };
|
04FC95642EB0546C007BD342 /* KBKey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBKey.h; sourceTree = "<group>"; };
|
||||||
04FC95652EB0546C007BD342 /* KBKey.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBKey.m; sourceTree = "<group>"; };
|
04FC95652EB0546C007BD342 /* KBKey.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBKey.m; sourceTree = "<group>"; };
|
||||||
@@ -803,6 +808,10 @@
|
|||||||
05A1B2C52F5B1A2B3C4D5E60 /* KBSearchVM.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchVM.m; sourceTree = "<group>"; };
|
05A1B2C52F5B1A2B3C4D5E60 /* KBSearchVM.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchVM.m; sourceTree = "<group>"; };
|
||||||
05A1B2C62F5B1A2B3C4D5E60 /* KBSearchThemeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSearchThemeModel.h; sourceTree = "<group>"; };
|
05A1B2C62F5B1A2B3C4D5E60 /* KBSearchThemeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSearchThemeModel.h; sourceTree = "<group>"; };
|
||||||
05A1B2C72F5B1A2B3C4D5E60 /* KBSearchThemeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchThemeModel.m; sourceTree = "<group>"; };
|
05A1B2C72F5B1A2B3C4D5E60 /* KBSearchThemeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchThemeModel.m; sourceTree = "<group>"; };
|
||||||
|
0F2A10012F3C0001002CA5A0 /* KBChatMessageActionPopView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBChatMessageActionPopView.h; sourceTree = "<group>"; };
|
||||||
|
0F2A10022F3C0001002CA5A0 /* KBChatMessageActionPopView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBChatMessageActionPopView.m; sourceTree = "<group>"; };
|
||||||
|
0F2A10112F3C0002002CA5A0 /* KBAIPersonaSidebarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBAIPersonaSidebarView.h; sourceTree = "<group>"; };
|
||||||
|
0F2A10122F3C0002002CA5A0 /* KBAIPersonaSidebarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBAIPersonaSidebarView.m; sourceTree = "<group>"; };
|
||||||
180D662EC4DB3A7FFF83FF18 /* KBMyTheme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBMyTheme.m; sourceTree = "<group>"; };
|
180D662EC4DB3A7FFF83FF18 /* KBMyTheme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBMyTheme.m; sourceTree = "<group>"; };
|
||||||
2C1092FB2B452F95B15D4263 /* Pods_CustomKeyboard.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CustomKeyboard.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
2C1092FB2B452F95B15D4263 /* Pods_CustomKeyboard.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CustomKeyboard.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
35E2B1C590E060D912A4E7F4 /* KBShopThemeTagModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBShopThemeTagModel.h; sourceTree = "<group>"; };
|
35E2B1C590E060D912A4E7F4 /* KBShopThemeTagModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBShopThemeTagModel.h; sourceTree = "<group>"; };
|
||||||
@@ -957,6 +966,8 @@
|
|||||||
04122FAF2EC73C0100EF7AB3 /* KBVipReviewItemCell.m */,
|
04122FAF2EC73C0100EF7AB3 /* KBVipReviewItemCell.m */,
|
||||||
04122FB12EC73C0100EF7AB3 /* KBVipReviewListCell.h */,
|
04122FB12EC73C0100EF7AB3 /* KBVipReviewListCell.h */,
|
||||||
04122FB22EC73C0100EF7AB3 /* KBVipReviewListCell.m */,
|
04122FB22EC73C0100EF7AB3 /* KBVipReviewListCell.m */,
|
||||||
|
04F4C0AE2F322EF200E8F08C /* PagingViewTableHeaderView.h */,
|
||||||
|
04F4C0AF2F322EF200E8F08C /* PagingViewTableHeaderView.m */,
|
||||||
);
|
);
|
||||||
path = V;
|
path = V;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -968,6 +979,10 @@
|
|||||||
04122F802EC5FC6F00EF7AB3 /* KBJfPay.m */,
|
04122F802EC5FC6F00EF7AB3 /* KBJfPay.m */,
|
||||||
04122F8F2EC73AF700EF7AB3 /* KBVipPay.h */,
|
04122F8F2EC73AF700EF7AB3 /* KBVipPay.h */,
|
||||||
04122F902EC73AF700EF7AB3 /* KBVipPay.m */,
|
04122F902EC73AF700EF7AB3 /* KBVipPay.m */,
|
||||||
|
04F4C0A82F32274000E8F08C /* KBPayMainVC.h */,
|
||||||
|
04F4C0A92F32274000E8F08C /* KBPayMainVC.m */,
|
||||||
|
04F4C0AB2F32288600E8F08C /* KBPaySvipVC.h */,
|
||||||
|
04F4C0AC2F32288600E8F08C /* KBPaySvipVC.m */,
|
||||||
);
|
);
|
||||||
path = VC;
|
path = VC;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -2418,6 +2433,7 @@
|
|||||||
04122F622EC5F41D00EF7AB3 /* KBUser.m in Sources */,
|
04122F622EC5F41D00EF7AB3 /* KBUser.m in Sources */,
|
||||||
04122F8B2EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.m in Sources */,
|
04122F8B2EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.m in Sources */,
|
||||||
04B5A1A22EEFA12300AAAAAA /* KBPayProductModel.m in Sources */,
|
04B5A1A22EEFA12300AAAAAA /* KBPayProductModel.m in Sources */,
|
||||||
|
04F4C0AD2F32288600E8F08C /* KBPaySvipVC.m in Sources */,
|
||||||
046086D62F1A093400757C95 /* KBAICommentInputView.m in Sources */,
|
046086D62F1A093400757C95 /* KBAICommentInputView.m in Sources */,
|
||||||
046086D72F1A093400757C95 /* KBAICommentFooterView.m in Sources */,
|
046086D72F1A093400757C95 /* KBAICommentFooterView.m in Sources */,
|
||||||
046086D82F1A093400757C95 /* KBAIReplyCell.m in Sources */,
|
046086D82F1A093400757C95 /* KBAIReplyCell.m in Sources */,
|
||||||
@@ -2487,6 +2503,7 @@
|
|||||||
048908E92EBF843000FABA60 /* KBSkinDetailHeaderCell.m in Sources */,
|
048908E92EBF843000FABA60 /* KBSkinDetailHeaderCell.m in Sources */,
|
||||||
04A9FE1B2EB892460020DB6D /* KBLocalizationManager.m in Sources */,
|
04A9FE1B2EB892460020DB6D /* KBLocalizationManager.m in Sources */,
|
||||||
048908BC2EBE1FCB00FABA60 /* BaseViewController.m in Sources */,
|
048908BC2EBE1FCB00FABA60 /* BaseViewController.m in Sources */,
|
||||||
|
04F4C0B02F322EF200E8F08C /* PagingViewTableHeaderView.m in Sources */,
|
||||||
0498BD902EE6A3BD006CC1D5 /* KBMyMainModel.m in Sources */,
|
0498BD902EE6A3BD006CC1D5 /* KBMyMainModel.m in Sources */,
|
||||||
A1F0C1C32FABCDEF12345678 /* KBInviteCodeModel.m in Sources */,
|
A1F0C1C32FABCDEF12345678 /* KBInviteCodeModel.m in Sources */,
|
||||||
A1F0C1D32FACAD0012345678 /* KBMaiPointReporter.m in Sources */,
|
A1F0C1D32FACAD0012345678 /* KBMaiPointReporter.m in Sources */,
|
||||||
@@ -2530,6 +2547,7 @@
|
|||||||
04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */,
|
04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */,
|
||||||
04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */,
|
04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */,
|
||||||
048908E02EBF73DC00FABA60 /* MySkinVC.m in Sources */,
|
048908E02EBF73DC00FABA60 /* MySkinVC.m in Sources */,
|
||||||
|
04F4C0AA2F32274000E8F08C /* KBPayMainVC.m in Sources */,
|
||||||
048FFD362F29F88E005D62AE /* AIMessageVM.m in Sources */,
|
048FFD362F29F88E005D62AE /* AIMessageVM.m in Sources */,
|
||||||
048908F22EC047FD00FABA60 /* KBShopHeadView.m in Sources */,
|
048908F22EC047FD00FABA60 /* KBShopHeadView.m in Sources */,
|
||||||
0498BD742EE02E3D006CC1D5 /* KBRegistVerEmailVC.m in Sources */,
|
0498BD742EE02E3D006CC1D5 /* KBRegistVerEmailVC.m in Sources */,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#import "UIImage+KBColor.h"
|
#import "UIImage+KBColor.h"
|
||||||
#import "KBTopImageButton.h"
|
#import "KBTopImageButton.h"
|
||||||
#import "KBVipPay.h"
|
#import "KBVipPay.h"
|
||||||
|
#import "KBPayMainVC.h"
|
||||||
|
|
||||||
|
|
||||||
@interface HomeHeadView()
|
@interface HomeHeadView()
|
||||||
@@ -174,7 +175,7 @@
|
|||||||
[[KBUserSessionManager shared] goLoginVC];
|
[[KBUserSessionManager shared] goLoginVC];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
KBVipPay *vc = [[KBVipPay alloc] init];
|
KBPayMainVC *vc = [[KBPayMainVC alloc] init];
|
||||||
[KB_CURRENT_NAV pushViewController:vc animated:true];
|
[KB_CURRENT_NAV pushViewController:vc animated:true];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,10 @@
|
|||||||
// 容器(为了便于以 KB_NAV_TOTAL_HEIGHT 作为内容起点)
|
// 容器(为了便于以 KB_NAV_TOTAL_HEIGHT 作为内容起点)
|
||||||
@property (nonatomic, strong) UIView *containerView;
|
@property (nonatomic, strong) UIView *containerView;
|
||||||
// 顶部大图:pay_vip_icon
|
// 顶部大图:pay_vip_icon
|
||||||
@property (nonatomic, strong) UIImageView *vipImageView;
|
//@property (nonatomic, strong) UIImageView *vipImageView;
|
||||||
@property (nonatomic, strong) UIImageView *wanImageView;
|
//@property (nonatomic, strong) UIImageView *wanImageView;
|
||||||
@property (nonatomic, strong) UILabel *titleLabel;
|
//@property (nonatomic, strong) UILabel *titleLabel;
|
||||||
@property (nonatomic, strong) UILabel *desLabel;
|
//@property (nonatomic, strong) UILabel *desLabel;
|
||||||
|
|
||||||
// 功能图标四宫格
|
// 功能图标四宫格
|
||||||
@property (nonatomic, strong) UIImageView *aiImageView;
|
@property (nonatomic, strong) UIImageView *aiImageView;
|
||||||
@@ -34,32 +34,6 @@
|
|||||||
make.edges.equalTo(self);
|
make.edges.equalTo(self);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
// 1. 顶部大图(略微下移,避开自定义导航栏)
|
|
||||||
[self.containerView addSubview:self.vipImageView];
|
|
||||||
[self.vipImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
||||||
make.right.left.equalTo(self.containerView).inset(KBFit(27));
|
|
||||||
make.top.equalTo(self.containerView).offset(KB_NAV_TOTAL_HEIGHT + 25);
|
|
||||||
make.height.mas_equalTo((269));
|
|
||||||
}];
|
|
||||||
[self.containerView addSubview:self.wanImageView];
|
|
||||||
[self.wanImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
||||||
make.right.left.equalTo(self.containerView);
|
|
||||||
make.top.equalTo(self.vipImageView).offset(70);
|
|
||||||
make.bottom.equalTo(self.containerView).offset(-16);
|
|
||||||
}];
|
|
||||||
|
|
||||||
[self.containerView addSubview:self.titleLabel];
|
|
||||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
||||||
make.centerX.equalTo(self.containerView);
|
|
||||||
make.top.equalTo(self.wanImageView).offset(53);
|
|
||||||
}];
|
|
||||||
[self.containerView addSubview:self.desLabel];
|
|
||||||
[self.desLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
||||||
make.centerX.equalTo(self.containerView);
|
|
||||||
make.top.equalTo(self.titleLabel.mas_bottom).offset(10);
|
|
||||||
}];
|
|
||||||
|
|
||||||
|
|
||||||
// 2. 下方四宫格图标(简单示意)
|
// 2. 下方四宫格图标(简单示意)
|
||||||
UIView *g1 = [self gridItemWithImageView:self.aiImageView];
|
UIView *g1 = [self gridItemWithImageView:self.aiImageView];
|
||||||
UIView *g2 = [self gridItemWithImageView:self.keyboardImageView];
|
UIView *g2 = [self gridItemWithImageView:self.keyboardImageView];
|
||||||
@@ -72,12 +46,12 @@
|
|||||||
|
|
||||||
CGFloat spacing = 16;
|
CGFloat spacing = 16;
|
||||||
[g1 mas_makeConstraints:^(MASConstraintMaker *make) {
|
[g1 mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.left.equalTo(self.vipImageView);
|
make.left.equalTo(self.containerView).inset(KBFit(27));
|
||||||
make.top.equalTo(self.desLabel.mas_bottom).offset(18);
|
make.top.equalTo(self.containerView).offset(KB_NAV_TOTAL_HEIGHT + 25);
|
||||||
make.height.mas_equalTo(((KBFit(122))));
|
make.height.mas_equalTo(((KBFit(122))));
|
||||||
}];
|
}];
|
||||||
[g2 mas_makeConstraints:^(MASConstraintMaker *make) {
|
[g2 mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.right.equalTo(self.vipImageView);
|
make.right.equalTo(self.containerView).inset(KBFit(27));
|
||||||
make.top.equalTo(g1);
|
make.top.equalTo(g1);
|
||||||
make.height.equalTo(g1);
|
make.height.equalTo(g1);
|
||||||
make.left.equalTo(g1.mas_right).offset(spacing);
|
make.left.equalTo(g1.mas_right).offset(spacing);
|
||||||
@@ -90,7 +64,7 @@
|
|||||||
make.width.equalTo(g1);
|
make.width.equalTo(g1);
|
||||||
}];
|
}];
|
||||||
[g4 mas_makeConstraints:^(MASConstraintMaker *make) {
|
[g4 mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.right.equalTo(self.vipImageView);
|
make.right.equalTo(g2);
|
||||||
make.top.equalTo(g3);
|
make.top.equalTo(g3);
|
||||||
make.left.equalTo(g3.mas_right).offset(spacing);
|
make.left.equalTo(g3.mas_right).offset(spacing);
|
||||||
make.height.equalTo(g1);
|
make.height.equalTo(g1);
|
||||||
@@ -144,21 +118,7 @@
|
|||||||
return _containerView;
|
return _containerView;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (UIImageView *)vipImageView {
|
|
||||||
if (!_vipImageView) {
|
|
||||||
_vipImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_vip_icon"]];
|
|
||||||
_vipImageView.contentMode = UIViewContentModeScaleAspectFill;
|
|
||||||
}
|
|
||||||
return _vipImageView;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (UIImageView *)wanImageView {
|
|
||||||
if (!_wanImageView) {
|
|
||||||
_wanImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_wanwhite_icon"]];
|
|
||||||
_wanImageView.contentMode = UIViewContentModeScaleAspectFill;
|
|
||||||
}
|
|
||||||
return _wanImageView;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (UIImageView *)aiImageView {
|
- (UIImageView *)aiImageView {
|
||||||
if (!_aiImageView) {
|
if (!_aiImageView) {
|
||||||
@@ -190,23 +150,4 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (UILabel *)titleLabel{
|
|
||||||
if (!_titleLabel) {
|
|
||||||
_titleLabel = [[UILabel alloc] init];
|
|
||||||
_titleLabel.text = @"Become a member of LOVE KEY";
|
|
||||||
_titleLabel.textColor = [UIColor colorWithHex:KBBlackValue];
|
|
||||||
_titleLabel.font = [KBFont bold:18];
|
|
||||||
}
|
|
||||||
return _titleLabel;
|
|
||||||
}
|
|
||||||
- (UILabel *)desLabel{
|
|
||||||
if (!_desLabel) {
|
|
||||||
_desLabel = [[UILabel alloc] init];
|
|
||||||
_desLabel.text = @"Unlock all functions";
|
|
||||||
_desLabel.textColor = [UIColor colorWithHex:KBBlackValue];
|
|
||||||
_desLabel.font = [KBFont medium:14];
|
|
||||||
}
|
|
||||||
return _desLabel;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
15
keyBoard/Class/Pay/V/PagingViewTableHeaderView.h
Normal file
15
keyBoard/Class/Pay/V/PagingViewTableHeaderView.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
//
|
||||||
|
// PagingViewTableHeaderView.h
|
||||||
|
// JXCategoryView
|
||||||
|
//
|
||||||
|
// Created by jiaxin on 2018/8/27.
|
||||||
|
// Copyright © 2018年 jiaxin. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
@interface PagingViewTableHeaderView : UIView
|
||||||
|
|
||||||
|
- (void)scrollViewDidScroll:(CGFloat)contentOffsetY;
|
||||||
|
|
||||||
|
@end
|
||||||
88
keyBoard/Class/Pay/V/PagingViewTableHeaderView.m
Normal file
88
keyBoard/Class/Pay/V/PagingViewTableHeaderView.m
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
//
|
||||||
|
// PagingViewTableHeaderView.m
|
||||||
|
// JXCategoryView
|
||||||
|
//
|
||||||
|
// Created by jiaxin on 2018/8/27.
|
||||||
|
// Copyright © 2018年 jiaxin. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "PagingViewTableHeaderView.h"
|
||||||
|
|
||||||
|
@interface PagingViewTableHeaderView()
|
||||||
|
@property (nonatomic, strong) UIImageView *bgImageView; // 全屏背景图
|
||||||
|
@property (nonatomic, strong) UIImageView *vipImageView;
|
||||||
|
@property (nonatomic, strong) UIImageView *wanImageView;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation PagingViewTableHeaderView
|
||||||
|
|
||||||
|
- (instancetype)initWithFrame:(CGRect)frame
|
||||||
|
{
|
||||||
|
self = [super initWithFrame:frame];
|
||||||
|
if (self) {
|
||||||
|
self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_vipbg_icon"]];
|
||||||
|
self.bgImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
|
self.bgImageView.clipsToBounds = true;
|
||||||
|
[self addSubview:self.bgImageView];
|
||||||
|
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.top.right.equalTo(self);
|
||||||
|
make.height.mas_equalTo(224);
|
||||||
|
}];
|
||||||
|
[self.bgImageView addSubview:self.vipImageView];
|
||||||
|
[self.vipImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.right.left.equalTo(self.bgImageView).inset(KBFit(27));
|
||||||
|
make.top.equalTo(self.bgImageView).offset(KB_NAV_TOTAL_HEIGHT + 25);
|
||||||
|
make.height.mas_equalTo((269));
|
||||||
|
}];
|
||||||
|
[self.bgImageView addSubview:self.wanImageView];
|
||||||
|
[self.wanImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.right.left.equalTo(self.bgImageView);
|
||||||
|
make.top.equalTo(self.bgImageView.mas_bottom).offset(-48);
|
||||||
|
make.height.mas_equalTo(391);
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)layoutSubviews {
|
||||||
|
[super layoutSubviews];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)scrollViewDidScroll:(CGFloat)contentOffsetY {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//- (UICollectionViewLayoutAttributes *)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes {
|
||||||
|
// CGFloat targetWidth = layoutAttributes.size.width > 0 ? layoutAttributes.size.width : KB_SCREEN_WIDTH;
|
||||||
|
// // 先把自身宽度设为目标宽,便于系统计算高度
|
||||||
|
// self.bounds = CGRectMake(0, 0, targetWidth, self.bounds.size.height);
|
||||||
|
// [self setNeedsLayout];
|
||||||
|
// [self layoutIfNeeded];
|
||||||
|
// CGSize fit = [self systemLayoutSizeFittingSize:CGSizeMake(targetWidth, UILayoutFittingCompressedSize.height)
|
||||||
|
// withHorizontalFittingPriority:UILayoutPriorityRequired
|
||||||
|
// verticalFittingPriority:UILayoutPriorityFittingSizeLevel];
|
||||||
|
// CGRect f = layoutAttributes.frame;
|
||||||
|
// f.size.height = ceil(fit.height);
|
||||||
|
// layoutAttributes.frame = f;
|
||||||
|
// return layoutAttributes;
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
- (UIImageView *)vipImageView {
|
||||||
|
if (!_vipImageView) {
|
||||||
|
_vipImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_vip_icon"]];
|
||||||
|
_vipImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
|
}
|
||||||
|
return _vipImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIImageView *)wanImageView {
|
||||||
|
if (!_wanImageView) {
|
||||||
|
_wanImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_wanwhite_icon"]];
|
||||||
|
_wanImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
|
}
|
||||||
|
return _wanImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
16
keyBoard/Class/Pay/VC/KBPayMainVC.h
Normal file
16
keyBoard/Class/Pay/VC/KBPayMainVC.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// KBPayMainVC.h
|
||||||
|
// keyBoard
|
||||||
|
//
|
||||||
|
// Created by Mac on 2026/2/3.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "BaseViewController.h"
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface KBPayMainVC : BaseViewController
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
210
keyBoard/Class/Pay/VC/KBPayMainVC.m
Normal file
210
keyBoard/Class/Pay/VC/KBPayMainVC.m
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
//
|
||||||
|
// KBPayMainVC.m
|
||||||
|
// keyBoard
|
||||||
|
//
|
||||||
|
// Created by Mac on 2026/2/3.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "KBPayMainVC.h"
|
||||||
|
#import "JXPagerView.h"
|
||||||
|
#import "KBShopHeadView.h"
|
||||||
|
#import <JXCategoryView/JXCategoryView.h>
|
||||||
|
#import "KBCategoryTitleView.h"
|
||||||
|
#import <JXPagingView/JXPagerView.h>
|
||||||
|
#import <MJRefresh/MJRefresh.h>
|
||||||
|
//#import "KBShopItemVC.h"
|
||||||
|
#import "KBVipPay.h"
|
||||||
|
#import "KBPaySvipVC.h"
|
||||||
|
|
||||||
|
|
||||||
|
#import "KBSearchVC.h"
|
||||||
|
#import "MySkinVC.h"
|
||||||
|
|
||||||
|
#import "JXPagerView.h"
|
||||||
|
#import "PagingViewTableHeaderView.h"
|
||||||
|
#import "JXCategoryTitleView.h"
|
||||||
|
|
||||||
|
static const CGFloat JXTableHeaderViewHeight = 224;
|
||||||
|
static const CGFloat JXheightForHeaderInSection = 50;
|
||||||
|
|
||||||
|
@interface KBPayMainVC ()<JXCategoryViewDelegate,JXPagerViewDelegate, JXPagerMainTableViewGestureDelegate>
|
||||||
|
@property (nonatomic, strong) JXPagerView *pagerView;
|
||||||
|
@property (nonatomic, strong) PagingViewTableHeaderView *userHeaderView;
|
||||||
|
@property (nonatomic, strong, readonly) JXCategoryTitleView *categoryView;
|
||||||
|
@property (nonatomic, assign) BOOL isNeedFooter;
|
||||||
|
@property (nonatomic, assign) BOOL isNeedHeader;
|
||||||
|
- (JXPagerView *)preferredPagingView;
|
||||||
|
@property (nonatomic, strong) NSArray <NSString *> *titles;
|
||||||
|
@property (nonatomic, strong) UIView *naviBGView;
|
||||||
|
@property (nonatomic, strong) UIButton *closeButton; // 当前选中的方案索引
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation KBPayMainVC
|
||||||
|
|
||||||
|
- (void)viewDidLoad {
|
||||||
|
[super viewDidLoad];
|
||||||
|
|
||||||
|
self.view.backgroundColor = [UIColor whiteColor];
|
||||||
|
self.navigationController.navigationBar.translucent = false;
|
||||||
|
self.edgesForExtendedLayout = UIRectEdgeNone;
|
||||||
|
// self.kb_navView.hidden = true;
|
||||||
|
_titles = @[@"VIP", @"SVIP"];
|
||||||
|
|
||||||
|
_userHeaderView = [[PagingViewTableHeaderView alloc] init];
|
||||||
|
|
||||||
|
_categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, JXheightForHeaderInSection)];
|
||||||
|
self.categoryView.titles = self.titles;
|
||||||
|
self.categoryView.backgroundColor = [UIColor whiteColor];
|
||||||
|
self.categoryView.delegate = self;
|
||||||
|
self.categoryView.titleSelectedColor = [UIColor colorWithRed:105/255.0 green:144/255.0 blue:239/255.0 alpha:1];
|
||||||
|
self.categoryView.titleColor = [UIColor blackColor];
|
||||||
|
self.categoryView.titleColorGradientEnabled = YES;
|
||||||
|
self.categoryView.titleLabelZoomEnabled = YES;
|
||||||
|
self.categoryView.contentScrollViewClickTransitionAnimationEnabled = NO;
|
||||||
|
|
||||||
|
JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init];
|
||||||
|
lineView.indicatorColor = [UIColor colorWithRed:105/255.0 green:144/255.0 blue:239/255.0 alpha:1];
|
||||||
|
lineView.indicatorWidth = 30;
|
||||||
|
self.categoryView.indicators = @[lineView];
|
||||||
|
|
||||||
|
_pagerView = [self preferredPagingView];
|
||||||
|
self.pagerView.mainTableView.gestureDelegate = self;
|
||||||
|
[self.view addSubview:self.pagerView];
|
||||||
|
|
||||||
|
self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagerView.listContainerView;
|
||||||
|
|
||||||
|
//导航栏隐藏的情况,处理扣边返回,下面的代码要加上
|
||||||
|
// [self.pagerView.listContainerView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];
|
||||||
|
// [self.pagerView.mainTableView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];
|
||||||
|
|
||||||
|
self.automaticallyAdjustsScrollViewInsets = NO;
|
||||||
|
CGFloat naviHeight = KB_NAV_TOTAL_HEIGHT;
|
||||||
|
self.pagerView.pinSectionHeaderVerticalOffset = naviHeight;
|
||||||
|
|
||||||
|
self.naviBGView = [[UIView alloc] init];
|
||||||
|
self.naviBGView.alpha = 0;
|
||||||
|
self.naviBGView.backgroundColor = [UIColor whiteColor];
|
||||||
|
self.naviBGView.frame = CGRectMake(0, 0, self.view.bounds.size.width, naviHeight);
|
||||||
|
[self.view addSubview:self.naviBGView];
|
||||||
|
|
||||||
|
UILabel *naviTitleLabel = [[UILabel alloc] init];
|
||||||
|
naviTitleLabel.text = @"导航栏隐藏";
|
||||||
|
naviTitleLabel.textAlignment = NSTextAlignmentCenter;
|
||||||
|
naviTitleLabel.frame = CGRectMake(0, KB_STATUSBAR_HEIGHT, self.view.bounds.size.width, 44);
|
||||||
|
[self.naviBGView addSubview:naviTitleLabel];
|
||||||
|
|
||||||
|
// UIButton *back = [UIButton buttonWithType:UIButtonTypeSystem];
|
||||||
|
// [back setTitle:@"返回" forState:UIControlStateNormal];
|
||||||
|
// back.frame = CGRectMake(12, KB_STATUSBAR_HEIGHT, 44, 44);
|
||||||
|
// [back addTarget:self action:@selector(backButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
// [self.naviBGView addSubview:back];
|
||||||
|
|
||||||
|
[self.view addSubview:self.closeButton];
|
||||||
|
[self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.top.equalTo(self.view).offset(KB_NAV_TOTAL_HEIGHT - 30);
|
||||||
|
make.left.equalTo(self.view).offset(15);
|
||||||
|
make.width.height.mas_equalTo(36);
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)viewDidAppear:(BOOL)animated {
|
||||||
|
[super viewDidAppear:animated];
|
||||||
|
|
||||||
|
self.navigationController.interactivePopGestureRecognizer.enabled = (self.categoryView.selectedIndex == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)viewWillDisappear:(BOOL)animated {
|
||||||
|
[super viewWillDisappear:animated];
|
||||||
|
|
||||||
|
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (JXPagerView *)preferredPagingView {
|
||||||
|
return [[JXPagerView alloc] initWithDelegate:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)viewDidLayoutSubviews {
|
||||||
|
[super viewDidLayoutSubviews];
|
||||||
|
|
||||||
|
self.pagerView.frame = self.view.bounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - JXPagerViewDelegate
|
||||||
|
|
||||||
|
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
|
||||||
|
return self.userHeaderView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
|
||||||
|
return JXTableHeaderViewHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
|
||||||
|
return JXheightForHeaderInSection;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
|
||||||
|
return self.categoryView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
|
||||||
|
//和categoryView的item数量一致
|
||||||
|
return self.categoryView.titles.count;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
|
||||||
|
if (index == 0) {
|
||||||
|
KBVipPay *list = [[KBVipPay alloc] init];
|
||||||
|
return list;
|
||||||
|
|
||||||
|
}
|
||||||
|
KBPaySvipVC *list = [[KBPaySvipVC alloc] init];
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - JXCategoryViewDelegate
|
||||||
|
|
||||||
|
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
|
||||||
|
self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - JXPagerMainTableViewGestureDelegate
|
||||||
|
|
||||||
|
- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
|
||||||
|
//禁止categoryView左右滑动的时候,上下和左右都可以滚动
|
||||||
|
if (otherGestureRecognizer == self.categoryView.collectionView.panGestureRecognizer) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidScroll:(UIScrollView *)scrollView {
|
||||||
|
CGFloat thresholdDistance = 100;
|
||||||
|
CGFloat percent = scrollView.contentOffset.y/thresholdDistance;
|
||||||
|
percent = MAX(0, MIN(1, percent));
|
||||||
|
self.naviBGView.alpha = percent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - Action
|
||||||
|
- (void)onTapClose{
|
||||||
|
[[KBMaiPointReporter sharedReporter] reportClickWithEventName:@"click_vip_close_btn"
|
||||||
|
pageId:@"vip_pay"
|
||||||
|
elementId:@"close_btn"
|
||||||
|
extra:nil
|
||||||
|
completion:nil];
|
||||||
|
[self.navigationController popViewControllerAnimated:true];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - lazy
|
||||||
|
- (UIButton *)closeButton {
|
||||||
|
if (!_closeButton) {
|
||||||
|
_closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||||
|
[_closeButton setImage:[UIImage imageNamed:@"close_white2_icon"] forState:UIControlStateNormal];
|
||||||
|
[_closeButton addTarget:self action:@selector(onTapClose) forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
}
|
||||||
|
return _closeButton;
|
||||||
|
}
|
||||||
|
@end
|
||||||
17
keyBoard/Class/Pay/VC/KBPaySvipVC.h
Normal file
17
keyBoard/Class/Pay/VC/KBPaySvipVC.h
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
//
|
||||||
|
// KBPaySvipVC.h
|
||||||
|
// keyBoard
|
||||||
|
//
|
||||||
|
// Created by Mac on 2026/2/3.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "BaseViewController.h"
|
||||||
|
#import <JXPagingView/JXPagerView.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface KBPaySvipVC : UIViewController<JXPagerViewListViewDelegate>
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
58
keyBoard/Class/Pay/VC/KBPaySvipVC.m
Normal file
58
keyBoard/Class/Pay/VC/KBPaySvipVC.m
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
//
|
||||||
|
// KBPaySvipVC.m
|
||||||
|
// keyBoard
|
||||||
|
//
|
||||||
|
// Created by Mac on 2026/2/3.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "KBPaySvipVC.h"
|
||||||
|
|
||||||
|
@interface KBPaySvipVC ()<UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
|
||||||
|
@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView);
|
||||||
|
@property (nonatomic, strong) UICollectionView *collectionView;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation KBPaySvipVC
|
||||||
|
|
||||||
|
- (void)viewDidLoad {
|
||||||
|
[super viewDidLoad];
|
||||||
|
// Do any additional setup after loading the view.
|
||||||
|
// 懒加载 collectionView,并添加到视图
|
||||||
|
[self.view addSubview:self.collectionView];
|
||||||
|
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.edges.equalTo(self.view); // mas 布局:铺满
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - UIScrollView Delegate(转发给分页容器)
|
||||||
|
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
|
||||||
|
!self.scrollCallback ?: self.scrollCallback(scrollView);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - JXPagingViewListViewDelegate
|
||||||
|
- (UIView *)listView { return self.view; }
|
||||||
|
- (UIScrollView *)listScrollView { return self.collectionView; }
|
||||||
|
- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { self.scrollCallback = callback; }
|
||||||
|
- (void)listWillAppear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); }
|
||||||
|
- (void)listDidAppear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); }
|
||||||
|
- (void)listWillDisappear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); }
|
||||||
|
- (void)listDidDisappear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); }
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - Lazy
|
||||||
|
- (UICollectionView *)collectionView {
|
||||||
|
if (!_collectionView) {
|
||||||
|
UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new];
|
||||||
|
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
|
||||||
|
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||||
|
_collectionView.backgroundColor = [UIColor clearColor];
|
||||||
|
// _collectionView.dataSource = self;
|
||||||
|
// _collectionView.delegate = self;
|
||||||
|
// 注册皮肤卡片 cell
|
||||||
|
// [_collectionView registerClass:KBSkinCardCell.class forCellWithReuseIdentifier:@"KBSkinCardCell"]; // 复用标识
|
||||||
|
}
|
||||||
|
return _collectionView;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -6,11 +6,12 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
|
#import <JXPagingView/JXPagerView.h>
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
/// VIP 订阅页(整体使用 UICollectionView,上下滚动)
|
/// VIP 订阅页(整体使用 UICollectionView,上下滚动)
|
||||||
@interface KBVipPay : BaseViewController
|
@interface KBVipPay : BaseViewController<JXPagerViewListViewDelegate>
|
||||||
|
|
||||||
/// 通过键盘深链配置初始商品及是否自动发起购买
|
/// 通过键盘深链配置初始商品及是否自动发起购买
|
||||||
- (void)configureWithProductId:(nullable NSString *)productId
|
- (void)configureWithProductId:(nullable NSString *)productId
|
||||||
|
|||||||
@@ -20,10 +20,11 @@ static NSString * const kKBVipSubscribeCellId = @"kKBVipSubscribeCellId";
|
|||||||
static NSString * const kKBVipReviewListCellId = @"kKBVipReviewListCellId";
|
static NSString * const kKBVipReviewListCellId = @"kKBVipReviewListCellId";
|
||||||
|
|
||||||
@interface KBVipPay () <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
|
@interface KBVipPay () <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
|
||||||
|
@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView);
|
||||||
|
|
||||||
@property (nonatomic, strong) UICollectionView *collectionView; // 主列表(竖向滚动)
|
@property (nonatomic, strong) UICollectionView *collectionView; // 主列表(竖向滚动)
|
||||||
@property (nonatomic, strong) NSArray<KBPayProductModel *> *plans; // 订阅方案数组
|
@property (nonatomic, strong) NSArray<KBPayProductModel *> *plans; // 订阅方案数组
|
||||||
@property (nonatomic, assign) NSInteger selectedIndex; // 当前选中的方案索引
|
@property (nonatomic, assign) NSInteger selectedIndex; // 当前选中的方案索引
|
||||||
@property (nonatomic, strong) UIButton *closeButton; // 当前选中的方案索引
|
|
||||||
@property (nonatomic, strong) UIButton *restoreButton;
|
@property (nonatomic, strong) UIButton *restoreButton;
|
||||||
@property (nonatomic, strong) UIImageView *bgImageView; // 全屏背景图
|
@property (nonatomic, strong) UIImageView *bgImageView; // 全屏背景图
|
||||||
// Header 自适应测量
|
// Header 自适应测量
|
||||||
@@ -90,16 +91,10 @@ static NSString * const kKBVipReviewListCellId = @"kKBVipReviewListCellId";
|
|||||||
make.top.equalTo(self.view).offset(0);
|
make.top.equalTo(self.view).offset(0);
|
||||||
make.bottom.equalTo(self.payButton.mas_top).offset(-16);
|
make.bottom.equalTo(self.payButton.mas_top).offset(-16);
|
||||||
}];
|
}];
|
||||||
[self.view addSubview:self.closeButton];
|
|
||||||
[self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
||||||
make.top.equalTo(self.view).offset(KB_NAV_TOTAL_HEIGHT - 30);
|
|
||||||
make.left.equalTo(self.view).offset(15);
|
|
||||||
make.width.height.mas_equalTo(36);
|
|
||||||
}];
|
|
||||||
[self.view addSubview:self.restoreButton];
|
[self.view addSubview:self.restoreButton];
|
||||||
[self.restoreButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.restoreButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.centerY.equalTo(self.closeButton);
|
make.top.equalTo(self.view).offset(KB_NAV_TOTAL_HEIGHT - 30); make.right.equalTo(self.view).offset(-15);
|
||||||
make.right.equalTo(self.view).offset(-15);
|
|
||||||
make.width.mas_equalTo(123);
|
make.width.mas_equalTo(123);
|
||||||
make.height.mas_equalTo(32);
|
make.height.mas_equalTo(32);
|
||||||
}];
|
}];
|
||||||
@@ -292,14 +287,14 @@ static NSString * const kKBVipReviewListCellId = @"kKBVipReviewListCellId";
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - Action
|
#pragma mark - Action
|
||||||
- (void)onTapClose{
|
//- (void)onTapClose{
|
||||||
[[KBMaiPointReporter sharedReporter] reportClickWithEventName:@"click_vip_close_btn"
|
// [[KBMaiPointReporter sharedReporter] reportClickWithEventName:@"click_vip_close_btn"
|
||||||
pageId:@"vip_pay"
|
// pageId:@"vip_pay"
|
||||||
elementId:@"close_btn"
|
// elementId:@"close_btn"
|
||||||
extra:nil
|
// extra:nil
|
||||||
completion:nil];
|
// completion:nil];
|
||||||
[self.navigationController popViewControllerAnimated:true];
|
// [self.navigationController popViewControllerAnimated:true];
|
||||||
}
|
//}
|
||||||
|
|
||||||
#pragma mark - Bottom Actions
|
#pragma mark - Bottom Actions
|
||||||
- (void)onTapPayButton {
|
- (void)onTapPayButton {
|
||||||
@@ -495,14 +490,7 @@ static NSString * const kKBVipReviewListCellId = @"kKBVipReviewListCellId";
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (UIButton *)closeButton {
|
|
||||||
if (!_closeButton) {
|
|
||||||
_closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
||||||
[_closeButton setImage:[UIImage imageNamed:@"close_white2_icon"] forState:UIControlStateNormal];
|
|
||||||
[_closeButton addTarget:self action:@selector(onTapClose) forControlEvents:UIControlEventTouchUpInside];
|
|
||||||
}
|
|
||||||
return _closeButton;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (UIButton *)restoreButton {
|
- (UIButton *)restoreButton {
|
||||||
if (!_restoreButton) {
|
if (!_restoreButton) {
|
||||||
@@ -575,4 +563,21 @@ static NSString * const kKBVipReviewListCellId = @"kKBVipReviewListCellId";
|
|||||||
[layout invalidateLayout];
|
[layout invalidateLayout];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - UIScrollView Delegate(转发给分页容器)
|
||||||
|
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
|
||||||
|
!self.scrollCallback ?: self.scrollCallback(scrollView);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - JXPagingViewListViewDelegate
|
||||||
|
- (UIView *)listView { return self.view; }
|
||||||
|
- (UIScrollView *)listScrollView { return self.collectionView; }
|
||||||
|
- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { self.scrollCallback = callback; }
|
||||||
|
- (void)listWillAppear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); }
|
||||||
|
- (void)listDidAppear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); }
|
||||||
|
- (void)listWillDisappear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); }
|
||||||
|
- (void)listDidDisappear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); }
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
Reference in New Issue
Block a user