// // RQHomePageViewController.m // RQCommon // // Created by 张嵘 on 2018/11/21. // Copyright © 2018 张嵘. All rights reserved. // #import "RQHomePageViewController.h" @interface RQHomePageViewController () /// viewModel @property (nonatomic, readonly, strong) RQHomePageViewModel *viewModel; @property (nonatomic, readwrite, strong) JXPagerView *pagerView; @property (nonatomic, readwrite, strong) JXCategoryTitleView *categoryView; @end @implementation RQHomePageViewController @dynamic viewModel; #pragma mark - SystemMethod - (void)viewDidLoad { [super viewDidLoad]; /// 初始化 [self rq_setup]; } #pragma mark - PrivateMethods /// 初始化 - (void)rq_setup { /// set up ... [self.view addSubview:self.pagerView]; } #pragma mark - JXPagerViewDelegate - (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { return [UIView new]; } - (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { return RQTableHeaderViewHeight; } - (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { return RQHeightForHeaderInSection; } - (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { return self.categoryView; } - (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { //和categoryView的item数量一致 return self.categoryView.titles.count; } - (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { switch (index) { case 1: case 4: { RQHomeSubPageViewModel *homeSubPageViewModel = [[RQHomeSubPageViewModel alloc] initWithServices:self.viewModel.services params:@{RQHomeSubPageTypeKey : @(index)}]; RQHomeSubPageViewController *homeSubPageViewController = [[RQHomeSubPageViewController alloc] initWithViewModel:homeSubPageViewModel]; return homeSubPageViewController; } default: return nil; } } #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]]; } #pragma mark - LazyLoad - (JXPagerView *)pagerView { if (!_pagerView) { _pagerView = [[JXPagerView alloc] initWithDelegate:self]; _pagerView.frame = self.view.bounds; _pagerView.mainTableView.gestureDelegate = self; _pagerView.mainTableView.contentInset = UIEdgeInsetsMake(RQ_APPLICATION_TOP_BAR_HEIGHT, 0, - RQ_APPLICATION_TAB_BAR_HEIGHT, 0); } return _pagerView; } - (JXCategoryTitleView *)categoryView { if (!_categoryView) { _categoryView = [[JXCategoryTitleView alloc] init]; _categoryView.titles = @[@"报名", @"科一", @"科二", @"科三", @"科四", @"下证"]; _categoryView.backgroundColor = [UIColor whiteColor]; _categoryView.titleSelectedColor = RQ_MAIN_COLOR; _categoryView.titleColor = RQ_MAIN_TEXT_COLOR_1; _categoryView.titleColorGradientEnabled = YES; _categoryView.titleLabelZoomEnabled = NO; _categoryView.contentScrollViewClickTransitionAnimationEnabled = NO; _categoryView.titleLabelZoomSelectedVerticalOffset = 0.0f; JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; lineView.indicatorColor = RQ_MAIN_COLOR; lineView.indicatorWidth = RQ_SCREEN_WIDTH / _categoryView.titles.count; lineView.indicatorHeight = 2; _categoryView.indicators = @[lineView]; _categoryView.defaultSelectedIndex = 1; _categoryView.listContainer = (id)self.pagerView.listContainerView; [_categoryView reloadData]; [self.pagerView reloadData]; } return _categoryView; } @end