Commit d39eb576206f2bb125e2182a64def633f2af038a

Authored by yanglingyu
1 parent c4bfaf2c

滑动监听添加

CNLiveVideoClassifyKit.podspec
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 8
9 Pod::Spec.new do |s| 9 Pod::Spec.new do |s|
10 s.name = 'CNLiveVideoClassifyKit' 10 s.name = 'CNLiveVideoClassifyKit'
11 - s.version = '0.0.20' 11 + s.version = '0.0.21'
12 s.summary = '视讯头部一二级菜单组件' 12 s.summary = '视讯头部一二级菜单组件'
13 13
14 # This description is used to generate tags and improve search results. 14 # This description is used to generate tags and improve search results.
CNLiveVideoClassifyKit/Classes/ClassifyCategory/Controller/CNLiveListController.h
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 NS_ASSUME_NONNULL_BEGIN 11 NS_ASSUME_NONNULL_BEGIN
12 12
13 @interface CNLiveListController : UIViewController<JXCategoryListContentViewDelegate> 13 @interface CNLiveListController : UIViewController<JXCategoryListContentViewDelegate>
  14 +
14 /** 15 /**
15 创建View 16 创建View
16 @param model 数据 17 @param model 数据
CNLiveVideoClassifyKit/Classes/ClassifyCategory/Controller/CNLiveListController.m
@@ -6,16 +6,21 @@ @@ -6,16 +6,21 @@
6 // 6 //
7 7
8 #import "CNLiveListController.h" 8 #import "CNLiveListController.h"
  9 +#import <webKit/webKit.h>
  10 +#import "CNLiveListManager.h"
9 11
10 @interface CNLiveListController () 12 @interface CNLiveListController ()
11 @property (nonatomic, strong)NSDictionary * paramDic; 13 @property (nonatomic, strong)NSDictionary * paramDic;
12 @property (nonatomic, strong)CNCategoryGetChannelModel *model; 14 @property (nonatomic, strong)CNCategoryGetChannelModel *model;
  15 +@property (nonatomic, assign) CGFloat contentOffetY;
  16 +@property (nonatomic, assign) BOOL isLoading;
13 @end 17 @end
14 18
15 @implementation CNLiveListController 19 @implementation CNLiveListController
16 -(instancetype)initWithModel:(CNCategoryGetChannelModel *)model black:(BOOL)black bgImage:(NSString *)bgImage bgColor:(NSString *)bgColor bgImageH5:(NSString *)bgImageH5 20 -(instancetype)initWithModel:(CNCategoryGetChannelModel *)model black:(BOOL)black bgImage:(NSString *)bgImage bgColor:(NSString *)bgColor bgImageH5:(NSString *)bgImageH5
17 { 21 {
18 if (self = [super init]) { 22 if (self = [super init]) {
  23 + self.contentOffetY = 0;
19 _model = model; 24 _model = model;
20 if ([model.pageType isEqualToString:@"4"] || [model.pageType isEqualToString:@"5"]){ 25 if ([model.pageType isEqualToString:@"4"] || [model.pageType isEqualToString:@"5"]){
21 self.paramDic= @{ 26 self.paramDic= @{
@@ -55,9 +60,88 @@ @@ -55,9 +60,88 @@
55 [CNLiveClassifyJumpBridge listViewRefreshWithVC:subVC pageType:_model.pageType.integerValue param:_paramDic refreshTime:time]; 60 [CNLiveClassifyJumpBridge listViewRefreshWithVC:subVC pageType:_model.pageType.integerValue param:_paramDic refreshTime:time];
56 // Do any additional setup after loading the view. 61 // Do any additional setup after loading the view.
57 } 62 }
58 --(void)viewDidLayoutSubviews 63 +- (void)viewDidAppear:(BOOL)animated
59 { 64 {
60 - [super viewDidLayoutSubviews]; 65 + [super viewDidAppear:animated];
  66 + NSLog(@"%@",self.childViewControllers[0]);
  67 + UIViewController *vc = self.childViewControllers[0];
  68 + if (([CNLiveListController searchProperties:[vc class] string:@"webView"]||[CNLiveListController searchProperties:[vc.superclass class] string:@"webView"])&&[vc valueForKey:@"webView"]&&[[vc valueForKey:@"webView"] isKindOfClass:[WKWebView class]]) {
  69 + WKWebView *webView = (WKWebView *)[vc valueForKey:@"webView"];
  70 + [webView.scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
  71 + if ([webView.scrollView valueForKey:@"mj_header"]) {
  72 + id header = [webView.scrollView valueForKey:@"mj_header"];
  73 + [header addObserver:self forKeyPath:@"state" options:NSKeyValueObservingOptionNew context:nil];
  74 + }
  75 +
  76 + }else if ([CNLiveListController searchProperties:[vc class] string:@"collectionView"]&&[vc valueForKey:@"collectionView"] && [[vc valueForKey:@"collectionView"] isKindOfClass:[UICollectionView class]]){
  77 + UICollectionView *collectionView = (UICollectionView *)[vc valueForKey:@"collectionView"];
  78 + [collectionView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
  79 + if ([collectionView valueForKey:@"mj_header"]) {
  80 + id header = [collectionView valueForKey:@"mj_header"];
  81 + [header addObserver:self forKeyPath:@"state" options:NSKeyValueObservingOptionNew context:nil];
  82 + }
  83 + }
  84 +}
  85 +- (void)viewDidDisappear:(BOOL)animated
  86 +{
  87 + [super viewDidDisappear:animated];
  88 + UIViewController *vc = self.childViewControllers[0];
  89 + if (([CNLiveListController searchProperties:[vc class] string:@"webView"]||[CNLiveListController searchProperties:[vc.superclass class] string:@"webView"])&&[vc valueForKey:@"webView"]&&[[vc valueForKey:@"webView"] isKindOfClass:[WKWebView class]]) {
  90 + WKWebView *webView = (WKWebView *)[vc valueForKey:@"webView"];
  91 + [webView.scrollView removeObserver:self forKeyPath:@"contentOffset"];
  92 + if ([webView.scrollView valueForKey:@"mj_header"]) {
  93 + id header = [webView.scrollView valueForKey:@"mj_header"];
  94 + [header removeObserver:self forKeyPath:@"state"];
  95 + }
  96 +
  97 + }else if ([CNLiveListController searchProperties:[vc class] string:@"collectionView"]&&[vc valueForKey:@"collectionView"] && [[vc valueForKey:@"collectionView"] isKindOfClass:[UICollectionView class]]){
  98 + UICollectionView *collectionView = (UICollectionView *)[vc valueForKey:@"collectionView"];
  99 + [collectionView removeObserver:self forKeyPath:@"contentOffset"];
  100 + if ([collectionView valueForKey:@"mj_header"]) {
  101 + id header = [collectionView valueForKey:@"mj_header"];
  102 + [header removeObserver:self forKeyPath:@"state"];
  103 + }
  104 + }
  105 +}
  106 ++ (BOOL)searchProperties:(Class)cls string:(NSString *)key
  107 +{
  108 + unsigned int count;
  109 + objc_property_t *properties = class_copyPropertyList(cls, &count);
  110 + for (int i = 0; i < count; i++) {
  111 + objc_property_t property = properties[i];
  112 + const char *cName = property_getName(property);
  113 + NSString *name = [NSString stringWithCString:cName encoding:NSUTF8StringEncoding];
  114 + if ([name isEqualToString:key]) {
  115 + return YES;
  116 + }
  117 + }
  118 + return NO;
  119 +}
  120 +#pragma mark - KVO
  121 +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
  122 +{
  123 + NSLog(@"%@:%@",object,change);
  124 + if ([keyPath isEqualToString:@"state"]) {
  125 + NSString *state = change[NSKeyValueChangeNewKey];
  126 + if (state.integerValue == 1) {
  127 + self.isLoading = NO;
  128 + }else{
  129 + self.isLoading = YES;
  130 + }
  131 + }else if ([keyPath isEqualToString:@"contentOffset"]) {
  132 + if (self.isLoading) {
  133 + return;
  134 + }
  135 + NSValue *newValue = change[NSKeyValueChangeNewKey];
  136 + CGFloat contentPointY = newValue.UIOffsetValue.vertical;
  137 + if (contentPointY>self.contentOffetY&&contentPointY>0) {
  138 + [[CNLiveListManager shareListManager] firstHeaderUp:YES];
  139 + self.contentOffetY = contentPointY;
  140 + }else if (self.contentOffetY > contentPointY){
  141 + self.contentOffetY = contentPointY;
  142 + [[CNLiveListManager shareListManager] firstHeaderUp:NO];
  143 + }
  144 + }
61 } 145 }
62 #pragma mark - JXCategoryListContentViewDelegate 146 #pragma mark - JXCategoryListContentViewDelegate
63 -(UIView *)listView 147 -(UIView *)listView
CNLiveVideoClassifyKit/Classes/ClassifyCategory/Manager/CNLiveListManager.h
@@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN @@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
15 15
16 +(instancetype)shareListManager; 16 +(instancetype)shareListManager;
17 17
18 -- (void)requestWebViewForScrollView:(nonnull UIScrollView *)scrollView isBeginDragging:(BOOL)isBeginDragging; 18 +- (void)firstHeaderUp:(BOOL)isUp;
19 19
20 + (CNCategoryBaseViewController *)CNCategoryBaseViewController; 20 + (CNCategoryBaseViewController *)CNCategoryBaseViewController;
21 @end 21 @end
CNLiveVideoClassifyKit/Classes/ClassifyCategory/Manager/CNLiveListManager.m
@@ -29,24 +29,15 @@ @@ -29,24 +29,15 @@
29 { 29 {
30 return [[CNLiveClassifySegmentController alloc] init]; 30 return [[CNLiveClassifySegmentController alloc] init];
31 } 31 }
32 -- (void)requestWebViewForScrollView:(nonnull UIScrollView *)scrollView isBeginDragging:(BOOL)isBeginDragging 32 +- (void)firstHeaderUp:(BOOL)isUp
33 { 33 {
34 - if (isBeginDragging) {  
35 - beginoffsetY = scrollView.offsetY;  
36 - }else  
37 - {  
38 - CGFloat hight = scrollView.frame.size.height;  
39 - CGFloat contentOffset = scrollView.contentOffset.y;  
40 - CGFloat distanceFromBottom = scrollView.contentSize.height - contentOffset;  
41 - CGFloat offset = contentOffset - beginoffsetY;  
42 - if (offset > 0 && contentOffset > 0 && !self.isHiddenFirst) { 34 + if (isUp&& !self.isHiddenFirst) {
43 self.isHiddenFirst = YES; 35 self.isHiddenFirst = YES;
44 !self.scrollViewDidScrollBlock ?: self.scrollViewDidScrollBlock(YES); 36 !self.scrollViewDidScrollBlock ?: self.scrollViewDidScrollBlock(YES);
45 - }else if (offset < 0 && ((scrollView.contentSize.height<hight && contentOffset<0) || distanceFromBottom>hight+1) && self.isHiddenFirst) { 37 + }else if (!isUp&& self.isHiddenFirst) {
46 self.isHiddenFirst = NO; 38 self.isHiddenFirst = NO;
47 !self.scrollViewDidScrollBlock ?: self.scrollViewDidScrollBlock(NO); 39 !self.scrollViewDidScrollBlock ?: self.scrollViewDidScrollBlock(NO);
48 } 40 }
49 - }  
50 } 41 }
51 - (void)setIsHiddenFirst:(BOOL)isHiddenFirst 42 - (void)setIsHiddenFirst:(BOOL)isHiddenFirst
52 { 43 {
Example/CNLiveVideoClassifyKit.xcodeproj/project.pbxproj
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 08DAFBDE26E8A2660099999A /* CNTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 08DAFBDC26E8A2660099999A /* CNTools.m */; }; 11 08DAFBDE26E8A2660099999A /* CNTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 08DAFBDC26E8A2660099999A /* CNTools.m */; };
12 08DAFBEA26E9E99C0099999A /* CNLiveClassifyKitImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 08DAFBE926E9E99C0099999A /* CNLiveClassifyKitImpl.m */; }; 12 08DAFBEA26E9E99C0099999A /* CNLiveClassifyKitImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 08DAFBE926E9E99C0099999A /* CNLiveClassifyKitImpl.m */; };
13 08DAFBED26E9EA7E0099999A /* CNLIVEDemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 08DAFBEC26E9EA7E0099999A /* CNLIVEDemoViewController.m */; }; 13 08DAFBED26E9EA7E0099999A /* CNLIVEDemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 08DAFBEC26E9EA7E0099999A /* CNLIVEDemoViewController.m */; };
  14 + 08FFE8E12744AACE00E39E0D /* CNLiveWebViewModuleImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FFE8DF2744AACE00E39E0D /* CNLiveWebViewModuleImpl.m */; };
14 14963F4E510A1E5865D15ED8 /* Pods_CNLiveVideoClassifyKit_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7743536FE5FB6796BFAA55B5 /* Pods_CNLiveVideoClassifyKit_Tests.framework */; }; 15 14963F4E510A1E5865D15ED8 /* Pods_CNLiveVideoClassifyKit_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7743536FE5FB6796BFAA55B5 /* Pods_CNLiveVideoClassifyKit_Tests.framework */; };
15 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 16 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
16 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; 17 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; };
@@ -49,6 +50,8 @@ @@ -49,6 +50,8 @@
49 08DAFBE926E9E99C0099999A /* CNLiveClassifyKitImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveClassifyKitImpl.m; sourceTree = "<group>"; }; 50 08DAFBE926E9E99C0099999A /* CNLiveClassifyKitImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveClassifyKitImpl.m; sourceTree = "<group>"; };
50 08DAFBEB26E9EA7E0099999A /* CNLIVEDemoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLIVEDemoViewController.h; sourceTree = "<group>"; }; 51 08DAFBEB26E9EA7E0099999A /* CNLIVEDemoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLIVEDemoViewController.h; sourceTree = "<group>"; };
51 08DAFBEC26E9EA7E0099999A /* CNLIVEDemoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLIVEDemoViewController.m; sourceTree = "<group>"; }; 52 08DAFBEC26E9EA7E0099999A /* CNLIVEDemoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLIVEDemoViewController.m; sourceTree = "<group>"; };
  53 + 08FFE8DF2744AACE00E39E0D /* CNLiveWebViewModuleImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveWebViewModuleImpl.m; sourceTree = "<group>"; };
  54 + 08FFE8E02744AACE00E39E0D /* CNLiveWebViewModuleImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveWebViewModuleImpl.h; sourceTree = "<group>"; };
52 24BF123CDE580DC9CCCE1718 /* Pods-CNLiveVideoClassifyKit_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveVideoClassifyKit_Example.release.xcconfig"; path = "Target Support Files/Pods-CNLiveVideoClassifyKit_Example/Pods-CNLiveVideoClassifyKit_Example.release.xcconfig"; sourceTree = "<group>"; }; 55 24BF123CDE580DC9CCCE1718 /* Pods-CNLiveVideoClassifyKit_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveVideoClassifyKit_Example.release.xcconfig"; path = "Target Support Files/Pods-CNLiveVideoClassifyKit_Example/Pods-CNLiveVideoClassifyKit_Example.release.xcconfig"; sourceTree = "<group>"; };
53 3A8AB8DB19B4EF9ACF33573D /* Pods-CNLiveVideoClassifyKit_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveVideoClassifyKit_Tests.release.xcconfig"; path = "Target Support Files/Pods-CNLiveVideoClassifyKit_Tests/Pods-CNLiveVideoClassifyKit_Tests.release.xcconfig"; sourceTree = "<group>"; }; 56 3A8AB8DB19B4EF9ACF33573D /* Pods-CNLiveVideoClassifyKit_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveVideoClassifyKit_Tests.release.xcconfig"; path = "Target Support Files/Pods-CNLiveVideoClassifyKit_Tests/Pods-CNLiveVideoClassifyKit_Tests.release.xcconfig"; sourceTree = "<group>"; };
54 5793570C0C400C4B3B4942CE /* Pods-CNLiveVideoClassifyKit_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveVideoClassifyKit_Example.debug.xcconfig"; path = "Target Support Files/Pods-CNLiveVideoClassifyKit_Example/Pods-CNLiveVideoClassifyKit_Example.debug.xcconfig"; sourceTree = "<group>"; }; 57 5793570C0C400C4B3B4942CE /* Pods-CNLiveVideoClassifyKit_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveVideoClassifyKit_Example.debug.xcconfig"; path = "Target Support Files/Pods-CNLiveVideoClassifyKit_Example/Pods-CNLiveVideoClassifyKit_Example.debug.xcconfig"; sourceTree = "<group>"; };
@@ -157,6 +160,8 @@ @@ -157,6 +160,8 @@
157 08DAFBDC26E8A2660099999A /* CNTools.m */, 160 08DAFBDC26E8A2660099999A /* CNTools.m */,
158 08DAFBE826E9E99C0099999A /* CNLiveClassifyKitImpl.h */, 161 08DAFBE826E9E99C0099999A /* CNLiveClassifyKitImpl.h */,
159 08DAFBE926E9E99C0099999A /* CNLiveClassifyKitImpl.m */, 162 08DAFBE926E9E99C0099999A /* CNLiveClassifyKitImpl.m */,
  163 + 08FFE8E02744AACE00E39E0D /* CNLiveWebViewModuleImpl.h */,
  164 + 08FFE8DF2744AACE00E39E0D /* CNLiveWebViewModuleImpl.m */,
160 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */, 165 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */,
161 6003F5A8195388D20070C39A /* Images.xcassets */, 166 6003F5A8195388D20070C39A /* Images.xcassets */,
162 6003F594195388D20070C39A /* Supporting Files */, 167 6003F594195388D20070C39A /* Supporting Files */,
@@ -374,8 +379,11 @@ @@ -374,8 +379,11 @@
374 "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework", 379 "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework",
375 "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework", 380 "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework",
376 "${BUILT_PRODUCTS_DIR}/CNLiveBeeHive/CNLiveBeeHive.framework", 381 "${BUILT_PRODUCTS_DIR}/CNLiveBeeHive/CNLiveBeeHive.framework",
  382 + "${BUILT_PRODUCTS_DIR}/CNLiveBusinessTools/CNLiveBusinessTools.framework",
  383 + "${BUILT_PRODUCTS_DIR}/CNLiveCWebViewModule/CNLiveCWebViewModule.framework",
377 "${BUILT_PRODUCTS_DIR}/CNLiveCategory/CNLiveCategory.framework", 384 "${BUILT_PRODUCTS_DIR}/CNLiveCategory/CNLiveCategory.framework",
378 "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework", 385 "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework",
  386 + "${BUILT_PRODUCTS_DIR}/CNLiveCustomUI/CNLiveCustomUI.framework",
379 "${BUILT_PRODUCTS_DIR}/CNLiveEnvironment/CNLiveEnvironment.framework", 387 "${BUILT_PRODUCTS_DIR}/CNLiveEnvironment/CNLiveEnvironment.framework",
380 "${BUILT_PRODUCTS_DIR}/CNLiveNewTripartiteManagement/CNLiveNewTripartiteManagement.framework", 388 "${BUILT_PRODUCTS_DIR}/CNLiveNewTripartiteManagement/CNLiveNewTripartiteManagement.framework",
381 "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework", 389 "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework",
@@ -383,19 +391,31 @@ @@ -383,19 +391,31 @@
383 "${BUILT_PRODUCTS_DIR}/FWDebug/FWDebug.framework", 391 "${BUILT_PRODUCTS_DIR}/FWDebug/FWDebug.framework",
384 "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework", 392 "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework",
385 "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework", 393 "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework",
  394 + "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework",
386 "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework", 395 "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework",
387 "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework", 396 "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework",
388 "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework", 397 "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
  398 + "${BUILT_PRODUCTS_DIR}/WebViewJavascriptBridge/WebViewJavascriptBridge.framework",
  399 + "${BUILT_PRODUCTS_DIR}/YYAsyncLayer/YYAsyncLayer.framework",
389 "${BUILT_PRODUCTS_DIR}/YYCache/YYCache.framework", 400 "${BUILT_PRODUCTS_DIR}/YYCache/YYCache.framework",
390 "${BUILT_PRODUCTS_DIR}/YYCategories/YYCategories.framework", 401 "${BUILT_PRODUCTS_DIR}/YYCategories/YYCategories.framework",
  402 + "${BUILT_PRODUCTS_DIR}/YYDispatchQueuePool/YYDispatchQueuePool.framework",
  403 + "${BUILT_PRODUCTS_DIR}/YYImage/YYImage.framework",
  404 + "${BUILT_PRODUCTS_DIR}/YYKeyboardManager/YYKeyboardManager.framework",
  405 + "${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework",
  406 + "${BUILT_PRODUCTS_DIR}/YYText/YYText.framework",
  407 + "${BUILT_PRODUCTS_DIR}/YYWebImage/YYWebImage.framework",
391 ); 408 );
392 name = "[CP] Embed Pods Frameworks"; 409 name = "[CP] Embed Pods Frameworks";
393 outputPaths = ( 410 outputPaths = (
394 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework", 411 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework",
395 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework", 412 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework",
396 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBeeHive.framework", 413 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBeeHive.framework",
  414 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBusinessTools.framework",
  415 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCWebViewModule.framework",
397 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCategory.framework", 416 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCategory.framework",
398 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework", 417 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework",
  418 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCustomUI.framework",
399 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveEnvironment.framework", 419 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveEnvironment.framework",
400 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveNewTripartiteManagement.framework", 420 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveNewTripartiteManagement.framework",
401 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework", 421 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework",
@@ -403,11 +423,20 @@ @@ -403,11 +423,20 @@
403 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FWDebug.framework", 423 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FWDebug.framework",
404 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework", 424 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework",
405 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework", 425 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework",
  426 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework",
406 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework", 427 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework",
407 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework", 428 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework",
408 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework", 429 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
  430 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebViewJavascriptBridge.framework",
  431 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYAsyncLayer.framework",
409 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYCache.framework", 432 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYCache.framework",
410 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYCategories.framework", 433 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYCategories.framework",
  434 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYDispatchQueuePool.framework",
  435 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYImage.framework",
  436 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYKeyboardManager.framework",
  437 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYModel.framework",
  438 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYText.framework",
  439 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYWebImage.framework",
411 ); 440 );
412 runOnlyForDeploymentPostprocessing = 0; 441 runOnlyForDeploymentPostprocessing = 0;
413 shellPath = /bin/sh; 442 shellPath = /bin/sh;
@@ -445,6 +474,7 @@ @@ -445,6 +474,7 @@
445 6003F59E195388D20070C39A /* CNLIVEAppDelegate.m in Sources */, 474 6003F59E195388D20070C39A /* CNLIVEAppDelegate.m in Sources */,
446 6003F5A7195388D20070C39A /* CNLIVEViewController.m in Sources */, 475 6003F5A7195388D20070C39A /* CNLIVEViewController.m in Sources */,
447 6003F59A195388D20070C39A /* main.m in Sources */, 476 6003F59A195388D20070C39A /* main.m in Sources */,
  477 + 08FFE8E12744AACE00E39E0D /* CNLiveWebViewModuleImpl.m in Sources */,
448 08DAFBDE26E8A2660099999A /* CNTools.m in Sources */, 478 08DAFBDE26E8A2660099999A /* CNTools.m in Sources */,
449 ); 479 );
450 runOnlyForDeploymentPostprocessing = 0; 480 runOnlyForDeploymentPostprocessing = 0;
Example/CNLiveVideoClassifyKit/CNLiveClassifyKitImpl.m
@@ -9,7 +9,8 @@ @@ -9,7 +9,8 @@
9 #import "CNLiveClassifyKitImpl.h" 9 #import "CNLiveClassifyKitImpl.h"
10 #import "CNLIVEDemoViewController.h" 10 #import "CNLIVEDemoViewController.h"
11 #import "CNLIVEViewController.h" 11 #import "CNLIVEViewController.h"
12 - 12 +#import <CNLiveCWebViewModule/CNLiveCWebViewModule.h>
  13 +#import <CNLiveCWebViewModule/CNLiveSubWebViewController.h>
13 #import <CNLiveCommonCategory/NSString+CNLiveUrlEncode.h> 14 #import <CNLiveCommonCategory/NSString+CNLiveUrlEncode.h>
14 15
15 @implementation CNLiveClassifyKitImpl 16 @implementation CNLiveClassifyKitImpl
@@ -22,9 +23,22 @@ @@ -22,9 +23,22 @@
22 }else if (pageType == 2){ 23 }else if (pageType == 2){
23 CNLIVEViewController *demo = [CNLIVEViewController new]; 24 CNLIVEViewController *demo = [CNLIVEViewController new];
24 return demo; 25 return demo;
25 - }else{ 26 + }else if (pageType == 7){
26 CNLIVEViewController *demo = [CNLIVEViewController new]; 27 CNLIVEViewController *demo = [CNLIVEViewController new];
27 return demo; 28 return demo;
  29 + }else{
  30 + NSString *thirdUrl = param[@"thirdUrl"];
  31 + NSString *backgroundColor = param[@"backgroundColor"];
  32 + NSString *backImageH5 = param[@"backgroundImgH5"];
  33 + if (!CNLiveStringIsEmpty(thirdUrl)) {
  34 + NSString *andStr = @"&";
  35 + if (![thirdUrl cn_containsString:@"?"]) {
  36 + andStr = @"?";
  37 + }
  38 + thirdUrl = [thirdUrl stringByAppendingFormat:@"%@backgroundColor=%@&backgroundImgH5=%@",andStr,backgroundColor?[backgroundColor urlEncode]:@"",backImageH5?[backImageH5 urlEncode]:@""];
  39 + }
  40 + CNLiveSubWebViewController *subVC = [CNLiveCWebViewModule showWebVCWithLunchForWebURL:thirdUrl ParamDict:param ShowType:CNLiveWebViewLunchShowTypeHidden];
  41 + return subVC;
28 } 42 }
29 43
30 } 44 }
Example/CNLiveVideoClassifyKit/CNLiveWebViewModuleImpl.m
@@ -116,7 +116,7 @@ @@ -116,7 +116,7 @@
116 } 116 }
117 117
118 - (void)requestWebViewForScrollView:(nonnull UIScrollView *)scrollView isBeginDragging:(BOOL)isBeginDragging { 118 - (void)requestWebViewForScrollView:(nonnull UIScrollView *)scrollView isBeginDragging:(BOOL)isBeginDragging {
119 - [[CNLiveListManager shareListManager] requestWebViewForScrollView:scrollView isBeginDragging:isBeginDragging]; 119 +
120 } 120 }
121 121
122 122
Example/Podfile
@@ -8,24 +8,24 @@ target &#39;CNLiveVideoClassifyKit_Example&#39; do @@ -8,24 +8,24 @@ target &#39;CNLiveVideoClassifyKit_Example&#39; do
8 pod 'CNLiveVideoClassifyKit', :path => '../' 8 pod 'CNLiveVideoClassifyKit', :path => '../'
9 pod 'CNLiveEnvironment' 9 pod 'CNLiveEnvironment'
10 pod 'CNLiveRequestBastKit' 10 pod 'CNLiveRequestBastKit'
11 -# pod 'CNLiveCWebViewModule' 11 + pod 'CNLiveCWebViewModule'
12 pod 'FWDebug', :configurations => ['Debug'] 12 pod 'FWDebug', :configurations => ['Debug']
13 # #依赖三方私有库,如果里面有.a的时候加上这个 13 # #依赖三方私有库,如果里面有.a的时候加上这个
14 -# pre_install do |installer| Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}  
15 - ############################################ #删除WebViewJavascriptBridge中的WebViewJavascriptBridge.h和WebViewJavascriptBridge.m文件 14 + pre_install do |installer| Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
  15 + ########################################### #删除WebViewJavascriptBridge中的WebViewJavascriptBridge.h和WebViewJavascriptBridge.m文件
16 16
17 -# dir_web = File.join(installer.sandbox.pod_dir('WebViewJavascriptBridge'), 'WebViewJavascriptBridge')  
18 -# Dir.foreach(dir_web) {|x|  
19 -# real_path = File.join(dir_web, x)  
20 -# if (!File.directory?(real_path) && File.exists?(real_path))  
21 -# if(x == 'WebViewJavascriptBridge.h' || x == 'WebViewJavascriptBridge.m')  
22 -# File.delete(real_path)  
23 -# end  
24 -# end  
25 -# }  
26 -# #删除WebViewJavascriptBridge中的WebViewJavascriptBridge.h和WebViewJavascriptBridge.m文件  
27 -# #################################################  
28 -# end 17 + dir_web = File.join(installer.sandbox.pod_dir('WebViewJavascriptBridge'), 'WebViewJavascriptBridge')
  18 + Dir.foreach(dir_web) {|x|
  19 + real_path = File.join(dir_web, x)
  20 + if (!File.directory?(real_path) && File.exists?(real_path))
  21 + if(x == 'WebViewJavascriptBridge.h' || x == 'WebViewJavascriptBridge.m')
  22 + File.delete(real_path)
  23 + end
  24 + end
  25 + }
  26 + #删除WebViewJavascriptBridge中的WebViewJavascriptBridge.h和WebViewJavascriptBridge.m文件
  27 + #################################################
  28 + end
29 29
30 post_install do |installer_representation| 30 post_install do |installer_representation|
31 installer_representation.pods_project.targets.each do |target| 31 installer_representation.pods_project.targets.each do |target|
Example/Podfile.lock
@@ -17,6 +17,20 @@ PODS: @@ -17,6 +17,20 @@ PODS:
17 - CNLiveBaseKit (0.1.23): 17 - CNLiveBaseKit (0.1.23):
18 - CNLiveNewTripartiteManagement/MJExtension 18 - CNLiveNewTripartiteManagement/MJExtension
19 - CNLiveBeeHive (0.1.9) 19 - CNLiveBeeHive (0.1.9)
  20 + - CNLiveBusinessTools (0.1.27):
  21 + - CNLiveBaseKit
  22 + - CNLiveEnvironment
  23 + - CNLiveNewTripartiteManagement/QMUIKit
  24 + - CNLiveNewTripartiteManagement/YYCache
  25 + - CNLiveNewTripartiteManagement/YYImage
  26 + - CNLiveNewTripartiteManagement/YYModel
  27 + - CNLiveNewTripartiteManagement/YYText
  28 + - CNLiveNewTripartiteManagement/YYWebImage
  29 + - CNLiveRequestBastKit
  30 + - CNLiveUserManagement
  31 + - YYAsyncLayer
  32 + - YYCategories
  33 + - YYDispatchQueuePool
20 - CNLiveCategory (0.0.2): 34 - CNLiveCategory (0.0.2):
21 - CNLiveCategory/Object (= 0.0.2) 35 - CNLiveCategory/Object (= 0.0.2)
22 - CNLiveCategory/Object (0.0.2) 36 - CNLiveCategory/Object (0.0.2)
@@ -25,24 +39,96 @@ PODS: @@ -25,24 +39,96 @@ PODS:
25 - CNLiveCommonCategory/ImageInBundle (= 0.5.2) 39 - CNLiveCommonCategory/ImageInBundle (= 0.5.2)
26 - CNLiveCommonCategory/ARC (0.5.2) 40 - CNLiveCommonCategory/ARC (0.5.2)
27 - CNLiveCommonCategory/ImageInBundle (0.5.2) 41 - CNLiveCommonCategory/ImageInBundle (0.5.2)
  42 + - CNLiveCustomUI (0.5.6):
  43 + - CNLiveBaseKit
  44 + - CNLiveBusinessTools
  45 + - CNLiveCustomUI/CNLiveBasicsUI (= 0.5.6)
  46 + - CNLiveCustomUI/CNLiveContentToolTextView (= 0.5.6)
  47 + - CNLiveCustomUI/CNLiveCycleScrollView (= 0.5.6)
  48 + - CNLiveCustomUI/CNLiveGetImage (= 0.5.6)
  49 + - CNLiveCustomUI/CNLivePopView (= 0.5.6)
  50 + - CNLiveCustomUI/CNLiveRefresh (= 0.5.6)
  51 + - CNLiveCustomUI/CNLiveBasicsUI (0.5.6):
  52 + - CNLiveBaseKit
  53 + - CNLiveBusinessTools
  54 + - CNLiveCustomUI/CNLiveGetImage
  55 + - CNLiveNewTripartiteManagement/Masonry
  56 + - CNLiveNewTripartiteManagement/QMUIKit
  57 + - CNLiveNewTripartiteManagement/YYAsyncLayer
  58 + - CNLiveNewTripartiteManagement/YYCache
  59 + - CNLiveNewTripartiteManagement/YYCategories
  60 + - CNLiveNewTripartiteManagement/YYDispatchQueuePool
  61 + - CNLiveNewTripartiteManagement/YYImage
  62 + - CNLiveNewTripartiteManagement/YYKeyboardManager
  63 + - CNLiveNewTripartiteManagement/YYModel
  64 + - CNLiveNewTripartiteManagement/YYText
  65 + - CNLiveNewTripartiteManagement/YYWebImage
  66 + - CNLiveCustomUI/CNLiveContentToolTextView (0.5.6):
  67 + - CNLiveBaseKit
  68 + - CNLiveBusinessTools
  69 + - CNLiveNewTripartiteManagement/Masonry
  70 + - CNLiveNewTripartiteManagement/QMUIKit
  71 + - CNLiveCustomUI/CNLiveCycleScrollView (0.5.6):
  72 + - CNLiveBaseKit
  73 + - CNLiveBusinessTools
  74 + - CNLiveNewTripartiteManagement/SDWebImage
  75 + - CNLiveCustomUI/CNLiveGetImage (0.5.6):
  76 + - CNLiveBaseKit
  77 + - CNLiveBusinessTools
  78 + - CNLiveCustomUI/CNLivePopView (0.5.6):
  79 + - CNLiveBaseKit
  80 + - CNLiveBusinessTools
  81 + - CNLiveNewTripartiteManagement/QMUIKit
  82 + - CNLiveCustomUI/CNLiveRefresh (0.5.6):
  83 + - CNLiveBaseKit
  84 + - CNLiveBusinessTools
  85 + - CNLiveCustomUI/CNLiveGetImage
  86 + - CNLiveNewTripartiteManagement/MJRefresh
  87 + - CNLiveCWebViewModule (0.0.15):
  88 + - CNLiveCustomUI
  89 + - CNLiveEnvironment
  90 + - CNLiveNewTripartiteManagement/Masonry
  91 + - CNLiveNewTripartiteManagement/QMUIKit
  92 + - CNLiveNewTripartiteManagement/YYText
  93 + - CNLiveRequestBastKit
  94 + - CNLiveSDK/CNLiveStat
  95 + - CNLiveUserManagement
  96 + - WebViewJavascriptBridge
28 - CNLiveEnvironment (0.3.3) 97 - CNLiveEnvironment (0.3.3)
29 - CNLiveNewTripartiteManagement/Masonry (0.2.0.5): 98 - CNLiveNewTripartiteManagement/Masonry (0.2.0.5):
30 - Masonry (= 1.1.0) 99 - Masonry (= 1.1.0)
31 - CNLiveNewTripartiteManagement/MJExtension (0.2.0.5): 100 - CNLiveNewTripartiteManagement/MJExtension (0.2.0.5):
32 - MJExtension (= 3.2.1) 101 - MJExtension (= 3.2.1)
  102 + - CNLiveNewTripartiteManagement/MJRefresh (0.2.0.6):
  103 + - MJRefresh (= 3.2.0)
33 - CNLiveNewTripartiteManagement/QMUIKit (0.2.0.5): 104 - CNLiveNewTripartiteManagement/QMUIKit (0.2.0.5):
34 - QMUIKit (= 4.2.1) 105 - QMUIKit (= 4.2.1)
35 - CNLiveNewTripartiteManagement/SDWebImage (0.2.0.5): 106 - CNLiveNewTripartiteManagement/SDWebImage (0.2.0.5):
36 - SDWebImage (= 5.2.3) 107 - SDWebImage (= 5.2.3)
  108 + - CNLiveNewTripartiteManagement/YYAsyncLayer (0.2.0.6):
  109 + - YYAsyncLayer (= 1.0)
37 - CNLiveNewTripartiteManagement/YYCache (0.2.0.5): 110 - CNLiveNewTripartiteManagement/YYCache (0.2.0.5):
38 - YYCache (= 1.0.4) 111 - YYCache (= 1.0.4)
39 - CNLiveNewTripartiteManagement/YYCategories (0.2.0.5): 112 - CNLiveNewTripartiteManagement/YYCategories (0.2.0.5):
40 - YYCategories (= 1.0.4) 113 - YYCategories (= 1.0.4)
  114 + - CNLiveNewTripartiteManagement/YYDispatchQueuePool (0.2.0.6):
  115 + - YYDispatchQueuePool (= 1.0)
  116 + - CNLiveNewTripartiteManagement/YYImage (0.2.0.6):
  117 + - YYImage (= 1.0.4)
  118 + - CNLiveNewTripartiteManagement/YYKeyboardManager (0.2.0.6):
  119 + - YYKeyboardManager (= 1.0.1)
  120 + - CNLiveNewTripartiteManagement/YYModel (0.2.0.6):
  121 + - YYModel (= 1.0.4)
  122 + - CNLiveNewTripartiteManagement/YYText (0.2.0.6):
  123 + - YYText (= 1.0.7)
  124 + - CNLiveNewTripartiteManagement/YYWebImage (0.2.0.6):
  125 + - YYWebImage (= 1.0.5)
41 - CNLiveRequestBastKit (0.2.5.6): 126 - CNLiveRequestBastKit (0.2.5.6):
42 - AFNetworking 127 - AFNetworking
  128 + - CNLiveSDK/CNLiveStat (0.3.4.8)
43 - CNLiveUserManagement (0.1.5): 129 - CNLiveUserManagement (0.1.5):
44 - CNLiveNewTripartiteManagement/MJExtension 130 - CNLiveNewTripartiteManagement/MJExtension
45 - - CNLiveVideoClassifyKit (0.0.17): 131 + - CNLiveVideoClassifyKit (0.0.20):
46 - CNLiveBaseKit 132 - CNLiveBaseKit
47 - CNLiveBeeHive 133 - CNLiveBeeHive
48 - CNLiveCategory 134 - CNLiveCategory
@@ -61,6 +147,7 @@ PODS: @@ -61,6 +147,7 @@ PODS:
61 - JXCategoryView (1.5.9) 147 - JXCategoryView (1.5.9)
62 - Masonry (1.1.0) 148 - Masonry (1.1.0)
63 - MJExtension (3.2.1) 149 - MJExtension (3.2.1)
  150 + - MJRefresh (3.2.0)
64 - QMUIKit (4.2.1): 151 - QMUIKit (4.2.1):
65 - QMUIKit/QMUIComponents (= 4.2.1) 152 - QMUIKit/QMUIComponents (= 4.2.1)
66 - QMUIKit/QMUICore (= 4.2.1) 153 - QMUIKit/QMUICore (= 4.2.1)
@@ -386,12 +473,25 @@ PODS: @@ -386,12 +473,25 @@ PODS:
386 - UMAPM 473 - UMAPM
387 - UMDevice 474 - UMDevice
388 - UMDevice (2.0.5) 475 - UMDevice (2.0.5)
  476 + - WebViewJavascriptBridge (6.0.3)
  477 + - YYAsyncLayer (1.0)
389 - YYCache (1.0.4) 478 - YYCache (1.0.4)
390 - YYCategories (1.0.4): 479 - YYCategories (1.0.4):
391 - YYCategories/no-arc (= 1.0.4) 480 - YYCategories/no-arc (= 1.0.4)
392 - YYCategories/no-arc (1.0.4) 481 - YYCategories/no-arc (1.0.4)
  482 + - YYDispatchQueuePool (1.0)
  483 + - YYImage (1.0.4):
  484 + - YYImage/Core (= 1.0.4)
  485 + - YYImage/Core (1.0.4)
  486 + - YYKeyboardManager (1.0.1)
  487 + - YYModel (1.0.4)
  488 + - YYText (1.0.7)
  489 + - YYWebImage (1.0.5):
  490 + - YYCache
  491 + - YYImage
393 492
394 DEPENDENCIES: 493 DEPENDENCIES:
  494 + - CNLiveCWebViewModule
395 - CNLiveEnvironment 495 - CNLiveEnvironment
396 - CNLiveRequestBastKit 496 - CNLiveRequestBastKit
397 - CNLiveVideoClassifyKit (from `../`) 497 - CNLiveVideoClassifyKit (from `../`)
@@ -401,25 +501,38 @@ SPEC REPOS: @@ -401,25 +501,38 @@ SPEC REPOS:
401 http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git: 501 http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git:
402 - CNLiveBaseKit 502 - CNLiveBaseKit
403 - CNLiveBeeHive 503 - CNLiveBeeHive
  504 + - CNLiveBusinessTools
404 - CNLiveCategory 505 - CNLiveCategory
405 - CNLiveCommonCategory 506 - CNLiveCommonCategory
  507 + - CNLiveCustomUI
  508 + - CNLiveCWebViewModule
406 - CNLiveEnvironment 509 - CNLiveEnvironment
407 - CNLiveNewTripartiteManagement 510 - CNLiveNewTripartiteManagement
408 - CNLiveRequestBastKit 511 - CNLiveRequestBastKit
409 - CNLiveUserManagement 512 - CNLiveUserManagement
410 https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git: 513 https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
411 - AFNetworking 514 - AFNetworking
  515 + - CNLiveSDK
412 - FWDebug 516 - FWDebug
413 - JXCategoryView 517 - JXCategoryView
414 - Masonry 518 - Masonry
415 - MJExtension 519 - MJExtension
  520 + - MJRefresh
416 - QMUIKit 521 - QMUIKit
417 - SDWebImage 522 - SDWebImage
418 - UMAPM 523 - UMAPM
419 - UMCCommon 524 - UMCCommon
420 - UMDevice 525 - UMDevice
  526 + - WebViewJavascriptBridge
  527 + - YYAsyncLayer
421 - YYCache 528 - YYCache
422 - YYCategories 529 - YYCategories
  530 + - YYDispatchQueuePool
  531 + - YYImage
  532 + - YYKeyboardManager
  533 + - YYModel
  534 + - YYText
  535 + - YYWebImage
423 536
424 EXTERNAL SOURCES: 537 EXTERNAL SOURCES:
425 CNLiveVideoClassifyKit: 538 CNLiveVideoClassifyKit:
@@ -429,25 +542,38 @@ SPEC CHECKSUMS: @@ -429,25 +542,38 @@ SPEC CHECKSUMS:
429 AFNetworking: 7864c38297c79aaca1500c33288e429c3451fdce 542 AFNetworking: 7864c38297c79aaca1500c33288e429c3451fdce
430 CNLiveBaseKit: 44e5fc573cbca78a86b704cf77c886ef53889807 543 CNLiveBaseKit: 44e5fc573cbca78a86b704cf77c886ef53889807
431 CNLiveBeeHive: 1e105b15b6ccaad546258fcf91231563beb853d4 544 CNLiveBeeHive: 1e105b15b6ccaad546258fcf91231563beb853d4
  545 + CNLiveBusinessTools: dfd3270d885523be2599bdc3a95a416277682d0d
432 CNLiveCategory: c90a01af1e20cd89f47d4f551d47d2ddc9ca96f3 546 CNLiveCategory: c90a01af1e20cd89f47d4f551d47d2ddc9ca96f3
433 CNLiveCommonCategory: 22c9842b31f2087803ae69e983b2c944fb80eae1 547 CNLiveCommonCategory: 22c9842b31f2087803ae69e983b2c944fb80eae1
  548 + CNLiveCustomUI: 55057d1da8c3b6987d8b427ae251db1dc71a3a19
  549 + CNLiveCWebViewModule: 27d1bbc10be19f90830a1671983d42eb4d34d7d8
434 CNLiveEnvironment: 6af0a2f332b704ffdec67106b4ba044c7f8da371 550 CNLiveEnvironment: 6af0a2f332b704ffdec67106b4ba044c7f8da371
435 - CNLiveNewTripartiteManagement: db7e1ba0a79312520194fde2fb78026a0f5e3eea 551 + CNLiveNewTripartiteManagement: 29ddb2d23ee77bcd42ba5eaf5f1322ed37db5baa
436 CNLiveRequestBastKit: c6ae13843ee0f96082c58230dc92c249edd6220f 552 CNLiveRequestBastKit: c6ae13843ee0f96082c58230dc92c249edd6220f
  553 + CNLiveSDK: 75bafaafbb8c09dcb4420adfe0f05130405b25e7
437 CNLiveUserManagement: ead053f2d701b01ea8fb5f1da572be788f2dd3cf 554 CNLiveUserManagement: ead053f2d701b01ea8fb5f1da572be788f2dd3cf
438 - CNLiveVideoClassifyKit: bfe369aa1ddd5b4939b34624f4f31e01ae30b702 555 + CNLiveVideoClassifyKit: fe003a79396501afaaafbb80020fffeb8275612d
439 FWDebug: 5a20d089a300517153de1438d8128ad4c4690951 556 FWDebug: 5a20d089a300517153de1438d8128ad4c4690951
440 JXCategoryView: 2ef9ecfd3735158d009ce02d1f29811aa822da65 557 JXCategoryView: 2ef9ecfd3735158d009ce02d1f29811aa822da65
441 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 558 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
442 MJExtension: 635f2c663dcb1bf76fa4b715b2570a5710aec545 559 MJExtension: 635f2c663dcb1bf76fa4b715b2570a5710aec545
  560 + MJRefresh: ed450d6eb9d3346a2cb033ab7eb6de090aeef437
443 QMUIKit: 15294d6a350466e4a6f4df0333eac5bff474f995 561 QMUIKit: 15294d6a350466e4a6f4df0333eac5bff474f995
444 SDWebImage: 46a7f73228f84ce80990c786e4372cf4db5875ce 562 SDWebImage: 46a7f73228f84ce80990c786e4372cf4db5875ce
445 UMAPM: 163962b8a6ec1a10a3034468da070b28ca510d5b 563 UMAPM: 163962b8a6ec1a10a3034468da070b28ca510d5b
446 UMCCommon: 3c535e9e3958f72df075cc6fe4776fb5e403c8bc 564 UMCCommon: 3c535e9e3958f72df075cc6fe4776fb5e403c8bc
447 UMDevice: c13bbb2e8ca6c67d1e23e03162553e3ec5a8b5b0 565 UMDevice: c13bbb2e8ca6c67d1e23e03162553e3ec5a8b5b0
  566 + WebViewJavascriptBridge: 7f5bc4d3581e672e8f32bd0f812d54bc69bb8e29
  567 + YYAsyncLayer: df6b01ebc695c5f6b4c15dd5c23fa3e081eb25c0
448 YYCache: 8105b6638f5e849296c71f331ff83891a4942952 568 YYCache: 8105b6638f5e849296c71f331ff83891a4942952
449 YYCategories: 6bcd4314c6661a561410dce4a793379ebd306abd 569 YYCategories: 6bcd4314c6661a561410dce4a793379ebd306abd
  570 + YYDispatchQueuePool: 3dfb2274bcc74207688dde8ac6f7bdd46871dd7b
  571 + YYImage: 1e1b62a9997399593e4b9c4ecfbbabbf1d3f3b54
  572 + YYKeyboardManager: ff53d2e80d1808567a7f004028bd200d9469a89f
  573 + YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
  574 + YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
  575 + YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
450 576
451 -PODFILE CHECKSUM: 3d349bf575390d6c2eb71885b6cb8e87236d6ba9 577 +PODFILE CHECKSUM: 8b9baccf9e475fa95c919cdeef4cb1daa577c0d6
452 578
453 COCOAPODS: 1.11.2 579 COCOAPODS: 1.11.2