RQHomePageViewController.m 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //
  2. // RQHomePageViewController.m
  3. // RQCommon
  4. //
  5. // Created by 张嵘 on 2018/11/21.
  6. // Copyright © 2018 张嵘. All rights reserved.
  7. //
  8. #import "RQHomePageViewController.h"
  9. @interface RQHomePageViewController () <JXCategoryViewDelegate, JXPagerViewDelegate, JXPagerMainTableViewGestureDelegate>
  10. /// viewModel
  11. @property (nonatomic, readonly, strong) RQHomePageViewModel *viewModel;
  12. @property (nonatomic, readwrite, strong) JXPagerView *pagerView;
  13. @property (nonatomic, readwrite, strong) JXCategoryTitleView *categoryView;
  14. @end
  15. @implementation RQHomePageViewController
  16. @dynamic viewModel;
  17. #pragma mark - SystemMethod
  18. - (void)viewDidLoad {
  19. [super viewDidLoad];
  20. /// 初始化
  21. [self rq_setup];
  22. }
  23. #pragma mark - PrivateMethods
  24. /// 初始化
  25. - (void)rq_setup {
  26. /// set up ...
  27. [self.view addSubview:self.pagerView];
  28. }
  29. #pragma mark - JXPagerViewDelegate
  30. - (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
  31. return [UIView new];
  32. }
  33. - (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
  34. return RQTableHeaderViewHeight;
  35. }
  36. - (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
  37. return RQHeightForHeaderInSection;
  38. }
  39. - (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
  40. return self.categoryView;
  41. }
  42. - (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
  43. //和categoryView的item数量一致
  44. return self.categoryView.titles.count;
  45. }
  46. - (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
  47. switch (index) {
  48. case 1:
  49. case 4: {
  50. RQHomeSubPageViewModel *homeSubPageViewModel = [[RQHomeSubPageViewModel alloc] initWithServices:self.viewModel.services params:@{RQHomeSubPageTypeKey : @(index)}];
  51. RQHomeSubPageViewController *homeSubPageViewController = [[RQHomeSubPageViewController alloc] initWithViewModel:homeSubPageViewModel];
  52. return homeSubPageViewController;
  53. }
  54. default:
  55. return nil;
  56. }
  57. }
  58. #pragma mark - JXCategoryViewDelegate
  59. - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
  60. self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0);
  61. }
  62. #pragma mark - JXPagerMainTableViewGestureDelegate
  63. - (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
  64. //禁止categoryView左右滑动的时候,上下和左右都可以滚动
  65. if (otherGestureRecognizer == self.categoryView.collectionView.panGestureRecognizer) {
  66. return NO;
  67. }
  68. return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
  69. }
  70. #pragma mark - LazyLoad
  71. - (JXPagerView *)pagerView {
  72. if (!_pagerView) {
  73. _pagerView = [[JXPagerView alloc] initWithDelegate:self];
  74. _pagerView.frame = self.view.bounds;
  75. _pagerView.mainTableView.gestureDelegate = self;
  76. _pagerView.mainTableView.contentInset = UIEdgeInsetsMake(RQ_APPLICATION_TOP_BAR_HEIGHT, 0, - RQ_APPLICATION_TAB_BAR_HEIGHT, 0);
  77. }
  78. return _pagerView;
  79. }
  80. - (JXCategoryTitleView *)categoryView {
  81. if (!_categoryView) {
  82. _categoryView = [[JXCategoryTitleView alloc] init];
  83. _categoryView.titles = @[@"报名", @"科一", @"科二", @"科三", @"科四", @"下证"];
  84. _categoryView.backgroundColor = [UIColor whiteColor];
  85. _categoryView.titleSelectedColor = RQ_MAIN_COLOR;
  86. _categoryView.titleColor = RQ_MAIN_TEXT_COLOR_1;
  87. _categoryView.titleColorGradientEnabled = YES;
  88. _categoryView.titleLabelZoomEnabled = NO;
  89. _categoryView.contentScrollViewClickTransitionAnimationEnabled = NO;
  90. _categoryView.titleLabelZoomSelectedVerticalOffset = 0.0f;
  91. JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init];
  92. lineView.indicatorColor = RQ_MAIN_COLOR;
  93. lineView.indicatorWidth = RQ_SCREEN_WIDTH / _categoryView.titles.count;
  94. lineView.indicatorHeight = 2;
  95. _categoryView.indicators = @[lineView];
  96. _categoryView.defaultSelectedIndex = 1;
  97. _categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagerView.listContainerView;
  98. [_categoryView reloadData];
  99. [self.pagerView reloadData];
  100. }
  101. return _categoryView;
  102. }
  103. @end