YMGuildManagementPagingViewController.m 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. //
  2. // OCExampleViewController.m
  3. // JXPagerView
  4. //
  5. // Created by jiaxin on 2018/8/27.
  6. // Copyright © 2018年 jiaxin. All rights reserved.
  7. //
  8. #import "YMGuildManagementPagingViewController.h"
  9. #import "JXCategoryView.h"
  10. #import "YMGuildManagementListViewController.h"
  11. @interface YMGuildManagementPagingViewController () <JXCategoryViewDelegate>
  12. @property (nonatomic, strong) JXCategoryTitleView *categoryView;
  13. @property (nonatomic, strong) NSArray <NSString *> *titles;
  14. @end
  15. @implementation YMGuildManagementPagingViewController
  16. - (void)viewDidLoad {
  17. [super viewDidLoad];
  18. self.view.backgroundColor = [UIColor whiteColor];
  19. self.navigationController.navigationBar.translucent = false;
  20. self.edgesForExtendedLayout = UIRectEdgeNone;
  21. _titles = @[@""];
  22. _userHeaderView = [[YMGuildManagementPagingViewTableHeaderView alloc] init];
  23. _categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, JXheightForHeaderInSection)];
  24. self.categoryView.titles = self.titles;
  25. self.categoryView.backgroundColor = [UIColor whiteColor];
  26. self.categoryView.delegate = self;
  27. self.categoryView.titleSelectedColor = [UIColor colorWithRed:105/255.0 green:144/255.0 blue:239/255.0 alpha:1];
  28. self.categoryView.titleColor = [UIColor blackColor];
  29. self.categoryView.titleColorGradientEnabled = YES;
  30. self.categoryView.titleLabelZoomEnabled = YES;
  31. self.categoryView.contentScrollViewClickTransitionAnimationEnabled = NO;
  32. JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init];
  33. lineView.indicatorColor = [UIColor colorWithRed:105/255.0 green:144/255.0 blue:239/255.0 alpha:1];
  34. lineView.indicatorWidth = 30;
  35. self.categoryView.indicators = @[lineView];
  36. _pagerView = [self preferredPagingView];
  37. self.pagerView.mainTableView.gestureDelegate = self;
  38. [self.view addSubview:self.pagerView];
  39. self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagerView.listContainerView;
  40. //导航栏隐藏的情况,处理扣边返回,下面的代码要加上
  41. // [self.pagerView.listContainerView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];
  42. // [self.pagerView.mainTableView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];
  43. }
  44. - (void)viewDidAppear:(BOOL)animated {
  45. [super viewDidAppear:animated];
  46. self.navigationController.interactivePopGestureRecognizer.enabled = (self.categoryView.selectedIndex == 0);
  47. }
  48. - (void)viewWillDisappear:(BOOL)animated {
  49. [super viewWillDisappear:animated];
  50. self.navigationController.interactivePopGestureRecognizer.enabled = YES;
  51. }
  52. - (JXPagerView *)preferredPagingView {
  53. return [[JXPagerView alloc] initWithDelegate:self];
  54. }
  55. - (void)viewDidLayoutSubviews {
  56. [super viewDidLayoutSubviews];
  57. self.pagerView.frame = self.view.bounds;
  58. }
  59. #pragma mark - JXPagerViewDelegate
  60. - (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
  61. return self.userHeaderView;
  62. }
  63. - (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
  64. return JXTableHeaderViewHeight;
  65. }
  66. - (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
  67. return JXheightForHeaderInSection;
  68. }
  69. - (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
  70. return self.categoryView;
  71. }
  72. - (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
  73. //和categoryView的item数量一致
  74. return self.categoryView.titles.count;
  75. }
  76. - (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
  77. YMGuildManagementListViewController *list = [[YMGuildManagementListViewController alloc] init];
  78. list.title = self.titles[index];
  79. list.isNeedHeader = self.isNeedHeader;
  80. list.isNeedFooter = self.isNeedFooter;
  81. return list;
  82. }
  83. #pragma mark - JXCategoryViewDelegate
  84. - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
  85. self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0);
  86. }
  87. #pragma mark - JXPagerMainTableViewGestureDelegate
  88. - (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
  89. //禁止categoryView左右滑动的时候,上下和左右都可以滚动
  90. if (otherGestureRecognizer == self.categoryView.collectionView.panGestureRecognizer) {
  91. return NO;
  92. }
  93. return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
  94. }
  95. @end