Commit 90108bd08ef751e6bdc0e96114557f9331f19271

Authored by yanglingyu
1 parent c0efbe6f

no message

CNLiveVideoClassifyKit/Classes/Controller/CNCategoryBaseViewController.h
@@ -10,12 +10,17 @@ @@ -10,12 +10,17 @@
10 10
11 NS_ASSUME_NONNULL_BEGIN 11 NS_ASSUME_NONNULL_BEGIN
12 12
13 -@interface CNCategoryBaseViewController : CNLiveBaseViewController<JXCategoryListContainerViewDelegate,JXCategoryViewDelegate>  
14 -@property (nonatomic, strong) NSMutableArray *titles; 13 +@interface CNCategoryBaseViewController : CNLiveBaseViewController<JXCategoryViewDelegate,UIPageViewControllerDelegate,UIPageViewControllerDataSource>
  14 +
15 @property (nonatomic, strong) JXCategoryBaseView *categoryView; 15 @property (nonatomic, strong) JXCategoryBaseView *categoryView;
16 -@property (nonatomic, strong) JXCategoryListContainerView *listContainerView;  
17 -@property (nonatomic, assign) BOOL isNeedIndicatorPositionChangeItem; 16 +@property (nonatomic, strong) UIPageViewController *pageViewController;
  17 +@property (nonatomic, strong) UIScrollView *findScrollView;
  18 +@property (nonatomic, strong) NSMutableArray *titles;
  19 +@property (nonatomic, strong) NSMutableArray *controllersArr;/// 控制器数组
  20 +
  21 +@property (nonatomic, assign) NSInteger ld_currentIndex; //当前选中
18 22
  23 +-(void)addTheFirstPage; //默认页
19 -(JXCategoryBaseView *)preferredCategoryView; 24 -(JXCategoryBaseView *)preferredCategoryView;
20 -(CGFloat)preferredCategoryViewHeight; 25 -(CGFloat)preferredCategoryViewHeight;
21 @end 26 @end
CNLiveVideoClassifyKit/Classes/Controller/CNCategoryBaseViewController.m
@@ -6,22 +6,21 @@ @@ -6,22 +6,21 @@
6 // 分类控制器根类 6 // 分类控制器根类
7 7
8 #import "CNCategoryBaseViewController.h" 8 #import "CNCategoryBaseViewController.h"
9 -#import "CNLiveListManager.h"  
10 -  
11 9
12 @interface CNCategoryBaseViewController () 10 @interface CNCategoryBaseViewController ()
13 -  
14 @end 11 @end
15 12
16 @implementation CNCategoryBaseViewController 13 @implementation CNCategoryBaseViewController
17 14
18 - (void)viewDidLoad { 15 - (void)viewDidLoad {
19 [super viewDidLoad]; 16 [super viewDidLoad];
20 - 17 + self.navigationController.navigationBarHidden = YES;
21 [self.view addSubview: self.categoryView]; 18 [self.view addSubview: self.categoryView];
22 - [self.view addSubview:self.listContainerView]; 19 + [self addChildViewController:self.pageViewController];
  20 + [self.view addSubview:self.pageViewController.view];
23 self.view.backgroundColor = [UIColor whiteColor]; 21 self.view.backgroundColor = [UIColor whiteColor];
24 self.navigationHidden = YES; 22 self.navigationHidden = YES;
  23 +
25 // Do any additional setup after loading the view. 24 // Do any additional setup after loading the view.
26 } 25 }
27 26
@@ -30,17 +29,23 @@ @@ -30,17 +29,23 @@
30 [super viewDidLayoutSubviews]; 29 [super viewDidLayoutSubviews];
31 30
32 self.categoryView.frame = CGRectMake(0, kStatusHeight, self.view.bounds.size.width, [self preferredCategoryViewHeight]); 31 self.categoryView.frame = CGRectMake(0, kStatusHeight, self.view.bounds.size.width, [self preferredCategoryViewHeight]);
33 - self.listContainerView.frame = CGRectMake(0, [self preferredCategoryViewHeight] +kStatusHeight, self.view.bounds.size.width, self.view.bounds.size.height - [self preferredCategoryViewHeight]-kStatusHeight);  
34 } 32 }
35 -(void)viewWillAppear:(BOOL)animated 33 -(void)viewWillAppear:(BOOL)animated
36 { 34 {
37 [super viewWillAppear:animated]; 35 [super viewWillAppear:animated];
38 - self.navigationController.interactivePopGestureRecognizer.enabled = YES; 36 + self.navigationController.interactivePopGestureRecognizer.enabled = NO;
39 self.navigationHidden = YES; 37 self.navigationHidden = YES;
40 38
41 } 39 }
42 40
43 #pragma mark - Public 41 #pragma mark - Public
  42 +-(void)addTheFirstPage{
  43 + UIViewController *vc = self.controllersArr[self.ld_currentIndex];
  44 + [self.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:nil];
  45 +}
  46 +- (void)configCategoryViewWithType:(JXCategoryTitleImageType)imageType selectIndex:(NSInteger)index unselectIndex:(NSInteger)unIndex{
  47 +
  48 +}
44 -(JXCategoryBaseView *)preferredCategoryView{ 49 -(JXCategoryBaseView *)preferredCategoryView{
45 return [[JXCategoryBaseView alloc] init]; 50 return [[JXCategoryBaseView alloc] init];
46 } 51 }
@@ -49,23 +54,58 @@ @@ -49,23 +54,58 @@
49 { 54 {
50 return 50; 55 return 50;
51 } 56 }
  57 +
  58 +#pragma mark - UIPageViewControllerDataSource
  59 +/// 展示上一页
  60 +- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
  61 + NSInteger index = self.ld_currentIndex;
  62 + if (index == 0 || (index == NSNotFound)) {
  63 + return nil;
  64 + }
  65 + index--;
  66 + self.ld_currentIndex = index;
  67 +// [self.categoryView.delegate categoryView:self.categoryView didSelectedItemAtIndex:self.ld_currentIndex];
  68 + return [self.controllersArr objectAtIndex:index];
  69 +}
  70 +/// 展示下一页
  71 +- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
  72 + NSInteger index = self.ld_currentIndex;
  73 + if (index == self.controllersArr.count - 1 || (index == NSNotFound)) {
  74 + return nil;
  75 + }
  76 + index++;
  77 + self.ld_currentIndex = index;
  78 +// [self.categoryView.delegate categoryView:self.categoryView didSelectedItemAtIndex:self.ld_currentIndex];
  79 + return [self.controllersArr objectAtIndex:index];
  80 +}
  81 +
  82 +#pragma mark - UIPageViewControllerDelegate
  83 +- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers {
  84 + UIViewController *nextVC = [pendingViewControllers firstObject];
  85 + NSInteger index = [self.controllersArr indexOfObject:nextVC];
  86 + self.ld_currentIndex = index;
  87 +}
  88 +- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed {
  89 + if (completed) {
  90 + NSIndexPath *path = [NSIndexPath indexPathForRow:self.ld_currentIndex inSection:0];
  91 + [self.categoryView.collectionView scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
  92 + [self.categoryView.delegate categoryView:self.categoryView didSelectedItemAtIndex:self.ld_currentIndex];
  93 + [self.categoryView selectCellAtIndex:self.ld_currentIndex selectedType:JXCategoryCellSelectedTypeScroll];
  94 + }
  95 +}
52 #pragma mark - JXCategoryViewDelegate 96 #pragma mark - JXCategoryViewDelegate
53 -(void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index 97 -(void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index
54 { 98 {
55 self.navigationController.interactivePopGestureRecognizer.enabled = (index ==0); 99 self.navigationController.interactivePopGestureRecognizer.enabled = (index ==0);
  100 + UIViewController *vc = self.controllersArr[index];
  101 + if (index>self.ld_currentIndex) {
  102 + [self.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];
  103 + }else
  104 + {
  105 + [self.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:NULL];
  106 + }
56 } 107 }
57 108
58 -#pragma mark - JXCategoryListContainerViewDelegate  
59 -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView  
60 -{  
61 - return self.titles.count;  
62 -}  
63 -  
64 --(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index  
65 -{  
66 - CNLiveListManager *list = [CNLiveListManager new];  
67 - return list;  
68 -}  
69 109
70 #pragma mark - Getting 110 #pragma mark - Getting
71 -(JXCategoryBaseView *)categoryView 111 -(JXCategoryBaseView *)categoryView
@@ -73,21 +113,30 @@ @@ -73,21 +113,30 @@
73 if (!_categoryView) { 113 if (!_categoryView) {
74 _categoryView = [self preferredCategoryView]; 114 _categoryView = [self preferredCategoryView];
75 _categoryView.delegate = self; 115 _categoryView.delegate = self;
76 - _categoryView.listContainer = self.listContainerView;  
77 } 116 }
78 return _categoryView; 117 return _categoryView;
79 } 118 }
80 -  
81 -- (JXCategoryListContainerView *)listContainerView 119 +-(UIPageViewController *)pageViewController
82 { 120 {
83 - if (!_listContainerView) {  
84 - _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self];  
85 - _listContainerView.scrollView.backgroundColor = [UIColor clearColor];  
86 - _listContainerView.listCellBackgroundColor = [UIColor clearColor]; 121 + if (!_pageViewController) {
  122 + NSDictionary *option = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:0] forKey:UIPageViewControllerOptionInterPageSpacingKey];
  123 + _pageViewController = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:option];
  124 + _pageViewController.delegate = self;
  125 + _pageViewController.dataSource = self;
87 } 126 }
88 - return _listContainerView; 127 + return _pageViewController;
  128 +
89 } 129 }
  130 +- (UIScrollView *)findScrollView{
  131 +for(id subview in self.pageViewController.view.subviews){
  132 +if([subview isKindOfClass:UIScrollView.class]){
  133 + _findScrollView=subview;
  134 + break;
  135 +}
  136 +}
  137 +return _findScrollView;
90 138
  139 +}
91 -(NSMutableArray *)titles 140 -(NSMutableArray *)titles
92 { 141 {
93 if (!_titles) { 142 if (!_titles) {
@@ -95,4 +144,13 @@ @@ -95,4 +144,13 @@
95 } 144 }
96 return _titles; 145 return _titles;
97 } 146 }
  147 +
  148 +-(NSMutableArray *)controllersArr
  149 +{
  150 + if (!_controllersArr) {
  151 + _controllersArr = [[NSMutableArray alloc] init];
  152 + }
  153 + return _controllersArr;
  154 +}
  155 +
98 @end 156 @end
CNLiveVideoClassifyKit/Classes/Controller/CNLiveClassifySegmentController.m
@@ -26,7 +26,6 @@ static const CGFloat animationHeight = 15; @@ -26,7 +26,6 @@ static const CGFloat animationHeight = 15;
26 @property (nonatomic, assign) CGFloat topBgImgHeight;//头部图片高度 26 @property (nonatomic, assign) CGFloat topBgImgHeight;//头部图片高度
27 @property (nonatomic, assign) CGFloat lastOffsetY; 27 @property (nonatomic, assign) CGFloat lastOffsetY;
28 28
29 -@property (nonatomic, assign) NSInteger currentIndex;//当前页  
30 29
31 @property (nonatomic, strong) NSString * currentAtatusColor; 30 @property (nonatomic, strong) NSString * currentAtatusColor;
32 31
@@ -53,7 +52,7 @@ static CGFloat moveHeight = 50; @@ -53,7 +52,7 @@ static CGFloat moveHeight = 50;
53 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(classifyChannelsRequest:) name:CNWjjClassifyChannelsRequestStateNotifiName object:nil]; 52 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(classifyChannelsRequest:) name:CNWjjClassifyChannelsRequestStateNotifiName object:nil];
54 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(classifyChannelsRequestedHideLoading:) name:CNWjjClassifyChannelsRequestHideLoadingNotifiName object:nil]; 53 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(classifyChannelsRequestedHideLoading:) name:CNWjjClassifyChannelsRequestHideLoadingNotifiName object:nil];
55 self.topBgImgHeight = kStatusHeight+100; 54 self.topBgImgHeight = kStatusHeight+100;
56 - self.currentIndex = 0; 55 + self.ld_currentIndex = 0;
57 [self.view addSubview:self.topBgImg]; 56 [self.view addSubview:self.topBgImg];
58 [self.view sendSubviewToBack:self.topBgImg]; 57 [self.view sendSubviewToBack:self.topBgImg];
59 [self dataDivideIntoNormalAndOtherWithFirst:YES]; 58 [self dataDivideIntoNormalAndOtherWithFirst:YES];
@@ -64,7 +63,6 @@ static CGFloat moveHeight = 50; @@ -64,7 +63,6 @@ static CGFloat moveHeight = 50;
64 { 63 {
65 [self.view addSubview:self.loginBtn]; 64 [self.view addSubview:self.loginBtn];
66 } 65 }
67 - self.myCategoryView.delegate = self;  
68 66
69 self.myCategoryView.translatesAutoresizingMaskIntoConstraints = NO; 67 self.myCategoryView.translatesAutoresizingMaskIntoConstraints = NO;
70 self.myCategoryView.titleColorGradientEnabled = YES; 68 self.myCategoryView.titleColorGradientEnabled = YES;
@@ -78,7 +76,6 @@ static CGFloat moveHeight = 50; @@ -78,7 +76,6 @@ static CGFloat moveHeight = 50;
78 self.myCategoryView.cellWidthZoomEnabled = YES; 76 self.myCategoryView.cellWidthZoomEnabled = YES;
79 self.myCategoryView.cellWidthZoomScale = 1.3; 77 self.myCategoryView.cellWidthZoomScale = 1.3;
80 self.myCategoryView.imageSize = CGSizeMake(56, 18); 78 self.myCategoryView.imageSize = CGSizeMake(56, 18);
81 - self.listContainerView.translatesAutoresizingMaskIntoConstraints = NO;  
82 if (!self.isLoading) { 79 if (!self.isLoading) {
83 [self uploadSubViews]; 80 [self uploadSubViews];
84 } 81 }
@@ -89,7 +86,7 @@ static CGFloat moveHeight = 50; @@ -89,7 +86,7 @@ static CGFloat moveHeight = 50;
89 -(void)viewDidLayoutSubviews 86 -(void)viewDidLayoutSubviews
90 { 87 {
91 [super viewDidLayoutSubviews]; 88 [super viewDidLayoutSubviews];
92 - self.listContainerView.frame = CGRectMake(0,self.myCategoryView.bottom, kScreenWidth, self.view.height -kStatusHeight); 89 + self.pageViewController.view.frame = CGRectMake(0, self.myCategoryView.bottom, kScreenWidth, self.view.bounds.size.height - self.myCategoryView.bottom+ moveHeight);
93 if ([CNUserShareManager isLogin]) { 90 if ([CNUserShareManager isLogin]) {
94 self.myCategoryView.width = kScreenWidth - 45; 91 self.myCategoryView.width = kScreenWidth - 45;
95 self.customChannelsBtn.centerY = self.myCategoryView.centerY; 92 self.customChannelsBtn.centerY = self.myCategoryView.centerY;
@@ -130,8 +127,8 @@ static CGFloat moveHeight = 50; @@ -130,8 +127,8 @@ static CGFloat moveHeight = 50;
130 } 127 }
131 - (void)uploadSubViews 128 - (void)uploadSubViews
132 { 129 {
133 - if (self.currentIndex>=self.titles.count) {  
134 - self.currentIndex = 0; 130 + if (self.ld_currentIndex>=self.titles.count) {
  131 + self.ld_currentIndex = 0;
135 } 132 }
136 for (int i = 0;i<self.imageNames.count;i++) { 133 for (int i = 0;i<self.imageNames.count;i++) {
137 NSURL *url = [NSURL URLWithString:self.imageNames[i]]; 134 NSURL *url = [NSURL URLWithString:self.imageNames[i]];
@@ -139,16 +136,48 @@ static CGFloat moveHeight = 50; @@ -139,16 +136,48 @@ static CGFloat moveHeight = 50;
139 } 136 }
140 //分类控制器基础配置 137 //分类控制器基础配置
141 self.myCategoryView.titles = self.titles; 138 self.myCategoryView.titles = self.titles;
142 - self.myCategoryView.delegate = self;  
143 self.myCategoryView.imageURLs = self.imageNames; 139 self.myCategoryView.imageURLs = self.imageNames;
144 - self.myCategoryView.defaultSelectedIndex = self.currentIndex; 140 + self.myCategoryView.defaultSelectedIndex = self.ld_currentIndex;
145 self.myCategoryView.loadImageCallback = ^(UIImageView *imageView, NSURL *imageURL) { 141 self.myCategoryView.loadImageCallback = ^(UIImageView *imageView, NSURL *imageURL) {
146 [imageView sd_setImageWithURL:imageURL]; 142 [imageView sd_setImageWithURL:imageURL];
147 }; 143 };
148 - [self updateSelectColors:self.currentIndex];  
149 - [self configCategoryViewWithType:JXCategoryTitleImageType_OnlyImage selectIndex:self.currentIndex unselectIndex:self.currentIndex]; 144 + [self updateSelectColors:self.ld_currentIndex];
  145 + [self configCategoryViewWithType:JXCategoryTitleImageType_OnlyImage selectIndex:self.ld_currentIndex unselectIndex:self.ld_currentIndex];
  146 +
  147 +
  148 + for (int i = 0; i<self.titles.count; i++) {
  149 + CNCategoryGetChannelModel *model = self.dataArray[i];
  150 + BOOL isBlack = NO;
  151 + if (CNLiveStringIsEmpty(model.statusBarColor)) {
  152 + isBlack = YES;
  153 + } else {
  154 + isBlack = [model.statusBarColor boolValue];//1 黑色
  155 + }
  156 + if (model.pageStyleList.count>0) {
  157 + self.topBgImg.frame = CGRectMake(0, 0, KScreenWidth, self.topBgImgHeight);
  158 + CNLiveSubSegmentController *subVC = [[CNLiveSubSegmentController alloc] initWithModel:model];
  159 + subVC.isBlack = isBlack;
  160 + weakself
  161 + subVC.scrollViewDidScrollBlock = ^(BOOL isUp) {
  162 + [weakSelf scrollViewUpDowm:isUp];
  163 + };
  164 +
  165 + [self.controllersArr addObject:subVC];
  166 + }else{
  167 + self.topBgImg.frame = CGRectMake(0, 0, KScreenWidth, self.topBgImgHeight - 50);
  168 + CNLiveListManager *list = [CNLiveListManager shareListManager];
  169 + UIViewController *listVC = [list model:model black:isBlack bgImage:self.bgImages[i] bgColor:model.backgroundColor bgImageH5:model.backgroundImgH5];
  170 + weakself
  171 + list.scrollViewDidScrollBlock = ^(BOOL isUp) {
  172 + [weakSelf scrollViewUpDowm:isUp];
  173 + };
  174 + [self.controllersArr addObject:listVC];
  175 + }
  176 + }
  177 + [self addTheFirstPage];
150 } 178 }
151 179
  180 +
152 #pragma mark - 通知的监听方法 Notification 181 #pragma mark - 通知的监听方法 Notification
153 // 分类接口请求成功或者失败 182 // 分类接口请求成功或者失败
154 - (void)classifyChannelsRequest:(NSNotification *)noti { 183 - (void)classifyChannelsRequest:(NSNotification *)noti {
@@ -359,6 +388,7 @@ static CGFloat moveHeight = 50; @@ -359,6 +388,7 @@ static CGFloat moveHeight = 50;
359 [self.textColors removeAllObjects]; 388 [self.textColors removeAllObjects];
360 [self.textColorSeleteds removeAllObjects]; 389 [self.textColorSeleteds removeAllObjects];
361 [self.statusBarColors removeAllObjects]; 390 [self.statusBarColors removeAllObjects];
  391 + [self.controllersArr removeAllObjects];
362 for (NSString *str in normalArray) { 392 for (NSString *str in normalArray) {
363 NSDictionary *dic = CNLiveStringJsonToDictionary(str); 393 NSDictionary *dic = CNLiveStringJsonToDictionary(str);
364 CNCategoryGetChannelModel *model = [CNCategoryGetChannelModel mj_objectWithKeyValues:dic]; 394 CNCategoryGetChannelModel *model = [CNCategoryGetChannelModel mj_objectWithKeyValues:dic];
@@ -423,7 +453,7 @@ static CGFloat moveHeight = 50; @@ -423,7 +453,7 @@ static CGFloat moveHeight = 50;
423 [self managerScrollView:YES]; 453 [self managerScrollView:YES];
424 self.topBgImg.top -= moveHeight; 454 self.topBgImg.top -= moveHeight;
425 self.myCategoryView.collectionView.top = -50-kStatusHeight; 455 self.myCategoryView.collectionView.top = -50-kStatusHeight;
426 - self.listContainerView.top = kStatusHeight; 456 + self.pageViewController.view.top = kStatusHeight;
427 } 457 }
428 -(void)scrollViewDown{ 458 -(void)scrollViewDown{
429 if (self.topBgImg.top==0) { 459 if (self.topBgImg.top==0) {
@@ -432,19 +462,17 @@ static CGFloat moveHeight = 50; @@ -432,19 +462,17 @@ static CGFloat moveHeight = 50;
432 [self managerScrollView:NO]; 462 [self managerScrollView:NO];
433 self.topBgImg.top += moveHeight; 463 self.topBgImg.top += moveHeight;
434 self.myCategoryView.collectionView.top = 0; 464 self.myCategoryView.collectionView.top = 0;
435 - self.listContainerView.top = self.myCategoryView.bottom; 465 + self.pageViewController.view.top = self.myCategoryView.bottom;
436 466
437 } 467 }
438 468
439 -(void)managerScrollView:(BOOL)enabled 469 -(void)managerScrollView:(BOOL)enabled
440 { 470 {
441 - self.listContainerView.scrollView.scrollEnabled = !enabled;  
442 - for (UIView *view in self.listContainerView.scrollView.subviews) {  
443 - if ([view.viewController isKindOfClass:[CNLiveSubSegmentController class]]) {  
444 - CNLiveSubSegmentController *subVc = (CNLiveSubSegmentController *)view.viewController;  
445 - [subVc layoutRightSubViewWithShow:!enabled];  
446 - }  
447 - } 471 + self.findScrollView.scrollEnabled = !enabled;
  472 + if ([self.pageViewController.viewControllers.firstObject isKindOfClass:[CNLiveSubSegmentController class]]) {
  473 + CNLiveSubSegmentController *subVc = (CNLiveSubSegmentController *)self.pageViewController.viewControllers.firstObject;
  474 + [subVc layoutRightSubViewWithShow:!enabled];
  475 + }
448 } 476 }
449 #pragma mark - CNCustomChannelListViewDelegate !!!!!!!!!!!!!!!!!!!!!! 477 #pragma mark - CNCustomChannelListViewDelegate !!!!!!!!!!!!!!!!!!!!!!
450 - (void)changeChannelsList 478 - (void)changeChannelsList
@@ -492,51 +520,20 @@ static CGFloat moveHeight = 50; @@ -492,51 +520,20 @@ static CGFloat moveHeight = 50;
492 } 520 }
493 521
494 #pragma mark - JXCategoryViewDelegate 522 #pragma mark - JXCategoryViewDelegate
495 -// 正在滚动中的回调,这里调整背景图片的 alpha 透明度  
496 -- (void)categoryView:(JXCategoryBaseView *)categoryView scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio {  
497 - [self configCategoryViewWithType:JXCategoryTitleImageType_OnlyImage selectIndex:leftIndex unselectIndex:rightIndex];  
498 -}  
499 -  
500 -  
501 - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { 523 - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
502 NSLog(@"%@", NSStringFromSelector(_cmd)); 524 NSLog(@"%@", NSStringFromSelector(_cmd));
503 - self.currentIndex = index; 525 + UIViewController *vc = self.controllersArr[index];
  526 + if (index>self.ld_currentIndex) {
  527 + [self.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];
  528 + }else
  529 + {
  530 + [self.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:NULL];
  531 + }
504 // 侧滑手势处理 532 // 侧滑手势处理
505 self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); 533 self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0);
506 [self updateSelectColors:index]; 534 [self updateSelectColors:index];
507 [self configCategoryViewWithType:JXCategoryTitleImageType_OnlyImage selectIndex:index unselectIndex:index]; 535 [self configCategoryViewWithType:JXCategoryTitleImageType_OnlyImage selectIndex:index unselectIndex:index];
508 -}  
509 -#pragma mark - JXCategoryListContainerViewDelegate  
510 --(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index  
511 -{  
512 - CNCategoryGetChannelModel *model = self.dataArray[index];  
513 - BOOL isBlack = NO;  
514 - if (CNLiveStringIsEmpty(model.statusBarColor)) {  
515 - isBlack = YES;  
516 - } else {  
517 - isBlack = [model.statusBarColor boolValue];//1 黑色  
518 - }  
519 - if (model.pageStyleList.count>0) {  
520 - self.topBgImg.frame = CGRectMake(0, 0, KScreenWidth, self.topBgImgHeight);  
521 - CNLiveSubSegmentController *subVC = [[CNLiveSubSegmentController alloc] initWithModel:model];  
522 - subVC.isBlack = isBlack;  
523 - weakself  
524 - subVC.scrollViewDidScrollBlock = ^(BOOL isUp) {  
525 - [weakSelf scrollViewUpDowm:isUp];  
526 - };  
527 -  
528 - return subVC;  
529 - }  
530 - self.topBgImg.frame = CGRectMake(0, 0, KScreenWidth, self.topBgImgHeight - 50);  
531 - CNLiveListManager *list = [CNLiveListManager shareListManager];  
532 - UIViewController *listView = [list model:model black:isBlack bgImage:[self.bgImages safetyObjectAtIndex:index] bgColor:model.backgroundColor bgImageH5:model.backgroundImgH5];  
533 - list.contentVC = self;  
534 - weakself  
535 - list.scrollViewDidScrollBlock = ^(BOOL isUp) {  
536 - [weakSelf scrollViewUpDowm:isUp];  
537 - };  
538 -  
539 - return listView; 536 +
540 } 537 }
541 #pragma mark - Public 538 #pragma mark - Public
542 -(JXCategoryBaseView *)preferredCategoryView 539 -(JXCategoryBaseView *)preferredCategoryView
CNLiveVideoClassifyKit/Classes/Controller/CNLiveListViewController.h deleted 100644 → 0
1 -//  
2 -// CNLiveListViewController.h  
3 -// CNLiveVideoClassifyKit  
4 -//  
5 -// Created by CNLive on 2021/9/10.  
6 -//  
7 -  
8 -#import <CNLiveBaseClass/CNLiveBaseClass.h>  
9 -  
10 -NS_ASSUME_NONNULL_BEGIN  
11 -  
12 -@interface CNLiveListViewController : CNLiveBaseViewController  
13 -  
14 -@end  
15 -  
16 -NS_ASSUME_NONNULL_END  
CNLiveVideoClassifyKit/Classes/Controller/CNLiveListViewController.m deleted 100644 → 0
1 -//  
2 -// CNLiveListViewController.m  
3 -// CNLiveVideoClassifyKit  
4 -//  
5 -// Created by CNLive on 2021/9/10.  
6 -//  
7 -  
8 -#import "CNLiveListViewController.h"  
9 -  
10 -@interface CNLiveListViewController ()  
11 -  
12 -@end  
13 -  
14 -@implementation CNLiveListViewController  
15 -  
16 -- (void)viewDidLoad {  
17 - [super viewDidLoad];  
18 - self.navigationHidden = YES;  
19 - // Do any additional setup after loading the view.  
20 -}  
21 -  
22 -/*  
23 -#pragma mark - Navigation  
24 -  
25 -// In a storyboard-based application, you will often want to do a little preparation before navigation  
26 -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {  
27 - // Get the new view controller using [segue destinationViewController].  
28 - // Pass the selected object to the new view controller.  
29 -}  
30 -*/  
31 -  
32 -@end  
CNLiveVideoClassifyKit/Classes/Controller/CNLiveSubSegmentController.h
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 10
11 NS_ASSUME_NONNULL_BEGIN 11 NS_ASSUME_NONNULL_BEGIN
12 12
13 -@interface CNLiveSubSegmentController : CNCategoryBaseViewController<JXCategoryListContentViewDelegate> 13 +@interface CNLiveSubSegmentController : CNCategoryBaseViewController
14 14
15 @property (nonatomic, assign) BOOL isBlack; 15 @property (nonatomic, assign) BOOL isBlack;
16 16
CNLiveVideoClassifyKit/Classes/Controller/CNLiveSubSegmentController.m
@@ -53,10 +53,11 @@ @@ -53,10 +53,11 @@
53 53
54 - (void)viewDidLoad { 54 - (void)viewDidLoad {
55 [super viewDidLoad]; 55 [super viewDidLoad];
  56 + [self handleDateWithChannelsArray];
56 // 添加二级频道右侧的搜索按钮 57 // 添加二级频道右侧的搜索按钮
57 [self.view addSubview:self.searchBtn]; 58 [self.view addSubview:self.searchBtn];
58 self.view.backgroundColor = [UIColor clearColor]; 59 self.view.backgroundColor = [UIColor clearColor];
59 - [self handleDateWithChannelsArray]; 60 + self.findScrollView.scrollEnabled = NO;
60 self.myCategoryView.titles = self.titles; 61 self.myCategoryView.titles = self.titles;
61 if (CNLiveStringIsEmpty(self.backImage)) { 62 if (CNLiveStringIsEmpty(self.backImage)) {
62 self.view.backgroundColor = CNLiveColorWithHexString(self.backgroundColor); 63 self.view.backgroundColor = CNLiveColorWithHexString(self.backgroundColor);
@@ -72,7 +73,19 @@ @@ -72,7 +73,19 @@
72 lineView.indicatorColor = self.textColor; 73 lineView.indicatorColor = self.textColor;
73 self.myCategoryView.indicators = @[lineView]; 74 self.myCategoryView.indicators = @[lineView];
74 [self.categoryView reloadData]; 75 [self.categoryView reloadData];
75 - self.listContainerView.scrollView.scrollEnabled = NO; 76 +
  77 + for (int i = 0; i<self.titles.count; i++) {
  78 + CNCategoryGetChannelModel *model = self.pageListArr[i];
  79 + CNLiveListManager *list = [CNLiveListManager shareListManager];
  80 + UIViewController *listVC = [list model:model black:_isBlack bgImage:self.backImage bgColor:self.backgroundColor bgImageH5:self.backImageH5];
  81 +
  82 + weakself
  83 + list.scrollViewDidScrollBlock = ^(BOOL isUp) {
  84 + !weakSelf.scrollViewDidScrollBlock ?: weakSelf.scrollViewDidScrollBlock(isUp);
  85 + };
  86 + [self.controllersArr addObject:listVC];
  87 + }
  88 + [self addTheFirstPage];
76 // Do any additional setup after loading the view. 89 // Do any additional setup after loading the view.
77 } 90 }
78 -(void)viewDidLayoutSubviews 91 -(void)viewDidLayoutSubviews
@@ -82,8 +95,7 @@ @@ -82,8 +95,7 @@
82 self.searchBtn.centerY = self.myCategoryView.height/2; 95 self.searchBtn.centerY = self.myCategoryView.height/2;
83 self.myCategoryView.top = 0; 96 self.myCategoryView.top = 0;
84 self.myCategoryView.width = self.searchBtn.left; 97 self.myCategoryView.width = self.searchBtn.left;
85 - self.listContainerView.frame = CGRectMake(0, [self preferredCategoryViewHeight]+10, self.view.bounds.size.width, self.view.bounds.size.height - [self preferredCategoryViewHeight]);  
86 - 98 + self.pageViewController.view.frame = CGRectMake(0, self.myCategoryView.bottom+10, kScreenWidth, self.view.bounds.size.height - self.myCategoryView.bottom);
87 } 99 }
88 #pragma mark - Method 100 #pragma mark - Method
89 -(void)handleDateWithChannelsArray{ 101 -(void)handleDateWithChannelsArray{
@@ -95,8 +107,7 @@ @@ -95,8 +107,7 @@
95 } 107 }
96 // 一级频道显示隐藏时二级频道右侧的搜索按钮变宽变窄控制 108 // 一级频道显示隐藏时二级频道右侧的搜索按钮变宽变窄控制
97 - (void)layoutRightSubViewWithShow:(BOOL)show { 109 - (void)layoutRightSubViewWithShow:(BOOL)show {
98 -  
99 - self.listContainerView.scrollView.scrollEnabled = !show; 110 + self.findScrollView.scrollEnabled = !show;
100 if (show) { 111 if (show) {
101 // 正常 112 // 正常
102 113
@@ -137,30 +148,19 @@ @@ -137,30 +148,19 @@
137 { 148 {
138 return 40; 149 return 40;
139 } 150 }
140 -#pragma mark - JXCategoryListContainerViewDelegate  
141 -  
142 --(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index 151 +#pragma mark - JXCategoryViewDelegate
  152 +-(void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index
143 { 153 {
144 - CNCategoryGetChannelModel *model = self.pageListArr[index];  
145 - CNLiveListManager *list = [CNLiveListManager shareListManager];  
146 - UIViewController *listView = [list model:model black:_isBlack bgImage:self.backImage bgColor:self.backgroundColor bgImageH5:self.backImageH5];  
147 - list.contentVC = self;  
148 - weakself  
149 - list.scrollViewDidScrollBlock = ^(BOOL isUp) {  
150 - !weakSelf.scrollViewDidScrollBlock ?: weakSelf.scrollViewDidScrollBlock(isUp);  
151 - };  
152 -  
153 - return listView;  
154 -}  
155 -#pragma mark - JXCategoryListContentViewDelegate 154 + self.navigationController.interactivePopGestureRecognizer.enabled = (index ==0);
  155 + UIViewController *vc = self.controllersArr[index];
  156 + if (index>self.ld_currentIndex) {
  157 + [self.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];
  158 + }else
  159 + {
  160 + [self.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:NULL];
  161 + }
156 162
157 -/**  
158 - 实现 <JXCategoryListContentViewDelegate> 协议方法,返回该视图控制器所拥有的「视图」  
159 - */  
160 -- (UIView *)listView {  
161 - return self.view;  
162 } 163 }
163 -  
164 #pragma mark - Getting&&Setting 164 #pragma mark - Getting&&Setting
165 -(JXCategoryTitleView *)myCategoryView 165 -(JXCategoryTitleView *)myCategoryView
166 { 166 {
CNLiveVideoClassifyKit/Classes/Manager/CNLiveListManager.h
@@ -7,12 +7,12 @@ @@ -7,12 +7,12 @@
7 7
8 #import <Foundation/Foundation.h> 8 #import <Foundation/Foundation.h>
9 @class CNCategoryGetChannelModel; 9 @class CNCategoryGetChannelModel;
  10 +@class CNLiveListViewController;
10 11
11 NS_ASSUME_NONNULL_BEGIN 12 NS_ASSUME_NONNULL_BEGIN
12 13
13 -@interface CNLiveListManager : NSObject<JXCategoryListContentViewDelegate> 14 +@interface CNLiveListManager : NSObject
14 @property (nonatomic, copy) void (^scrollViewDidScrollBlock)(BOOL isUp); 15 @property (nonatomic, copy) void (^scrollViewDidScrollBlock)(BOOL isUp);
15 -@property (nonatomic, weak) UIViewController *contentVC;  
16 16
17 +(instancetype)shareListManager; 17 +(instancetype)shareListManager;
18 18
CNLiveVideoClassifyKit/Classes/Manager/CNLiveListManager.m
@@ -10,7 +10,6 @@ @@ -10,7 +10,6 @@
10 10
11 @interface CNLiveListManager() 11 @interface CNLiveListManager()
12 { 12 {
13 - UIViewController *subVC;  
14 CGFloat beginoffsetY; 13 CGFloat beginoffsetY;
15 } 14 }
16 @end 15 @end
@@ -50,7 +49,7 @@ @@ -50,7 +49,7 @@
50 @"backgroundImgH5":bgImageH5?bgImageH5:@"" 49 @"backgroundImgH5":bgImageH5?bgImageH5:@""
51 }; 50 };
52 } 51 }
53 - subVC = [CNLiveClassifyJumpBridge ListViewWithPageType:model.pageType.integerValue param:paramDic]; 52 + UIViewController *subVC = [CNLiveClassifyJumpBridge ListViewWithPageType:model.pageType.integerValue param:paramDic];
54 return subVC; 53 return subVC;
55 } 54 }
56 - (void)requestWebViewForScrollView:(nonnull UIScrollView *)scrollView isBeginDragging:(BOOL)isBeginDragging 55 - (void)requestWebViewForScrollView:(nonnull UIScrollView *)scrollView isBeginDragging:(BOOL)isBeginDragging
@@ -67,13 +66,4 @@ @@ -67,13 +66,4 @@
67 } 66 }
68 } 67 }
69 68
70 -  
71 -#pragma mark - JXCategoryListContentViewDelegate  
72 -  
73 -/**  
74 - 实现 <JXCategoryListContentViewDelegate> 协议方法,返回该视图控制器所拥有的「视图」  
75 - */  
76 -- (UIView *)listView {  
77 - return subVC.view;  
78 -}  
79 @end 69 @end
Example/CNLiveVideoClassifyKit/CNLIVEDemoViewController.m
@@ -19,7 +19,12 @@ @@ -19,7 +19,12 @@
19 self.view.backgroundColor = [UIColor greenColor]; 19 self.view.backgroundColor = [UIColor greenColor];
20 // Do any additional setup after loading the view. 20 // Do any additional setup after loading the view.
21 } 21 }
22 - 22 +-(void)viewDidAppear:(BOOL)animated
  23 +{
  24 + [super viewDidAppear:animated];
  25 + self.navigationController.navigationBarHidden = YES;
  26 +
  27 +}
23 /* 28 /*
24 #pragma mark - Navigation 29 #pragma mark - Navigation
25 30
Example/CNLiveVideoClassifyKit/CNLIVEViewController.m
@@ -40,11 +40,17 @@ @@ -40,11 +40,17 @@
40 - (void)viewDidLoad 40 - (void)viewDidLoad
41 { 41 {
42 [super viewDidLoad]; 42 [super viewDidLoad];
  43 +
43 [CNTools GetClassifyChannelsUrlsAndSave]; 44 [CNTools GetClassifyChannelsUrlsAndSave];
44 self.title = @"首页"; 45 self.title = @"首页";
45 segArr = @[@"分类"]; 46 segArr = @[@"分类"];
46 [self.view addSubview:self.collectionView]; 47 [self.view addSubview:self.collectionView];
47 } 48 }
  49 +-(void)viewDidAppear:(BOOL)animated
  50 +{
  51 + [super viewDidAppear:animated];
  52 + self.navigationController.navigationBarHidden = YES;
  53 +}
48 #pragma mrk - UICollectionViewDataSource 54 #pragma mrk - UICollectionViewDataSource
49 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 55 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
50 { 56 {