赞
踩
最近写项目,遇到了一个vc下面有多个vc 指示器可以点击切换,也可也左右滑动进行切换,解除了JXCategoryTitleView 感觉很好用;
一般要求主vc遵循JXCategoryViewDelegate、JXCategoryListContainerViewDelegate两个协议 子vc遵循JXCategoryListContentViewDelegate
必写属性
- //指示器view
- @property (nonatomic, strong) JXCategoryTitleView *categoryView;
- //正文view
- @property (nonatomic, strong) JXCategoryListContainerView *listContainerView;
- //vc数组 直接添加成vc可使得代码更加简洁
- @property (strong, nonatomic) NSArray <__kindof UIViewController *> *controllers;
遵循协议 则相对应的代理方法必写
- #pragma mark - JXCategoryListContentViewDelegate
- - (UIView *)listView{
- return self.view;
- }
- #pragma mark - JXCategoryListContainerViewDelegate
- - (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
- __kindof UIViewController *vc = self.controllers[index];
- return vc;
- }
-
- - (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView {
- return self.controllers.count;
- }
- #pragma mark - JXCategoryViewDelegate
- // 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。
- - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
- //侧滑手势处理
- self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0);
- }
-
- - (BOOL)categoryCollectionView:(JXCategoryCollectionView *)collectionView gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
- if (collectionView.contentOffset.x <= 0) {
- if ([otherGestureRecognizer.delegate isKindOfClass:NSClassFromString(@"_FDFullscreenPopGestureRecognizerDelegate")]) {
- return YES;
- }
- }
- return NO;
- }
若需要对指示器特殊处理 则对categoryview 自行写view
- #pragma mark - 懒加载
- - (JXCategoryTitleView *)categoryView{
- if (!_categoryView) {
- _categoryView = [[JXCategoryTitleView alloc] init];
- _categoryView.backgroundColor = [UIColor colorWithHexString:@"#F3F3F3"];
- _categoryView.layer.cornerRadius = 16;
- _categoryView.clipsToBounds = YES;
- _categoryView.delegate = self;
- _categoryView.titles = @[@"今天",@"7天",@"30天"];
- _categoryView.defaultSelectedIndex = 0;
- _categoryView.titleSelectedColor = [UIColor colorWithHexString:@"#161619"];
- _categoryView.titleColor = [UIColor colorWithHexString:@"#A3A3A3"];
- _categoryView.titleFont = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium];
-
- JXCategoryIndicatorBackgroundView *backgroundView = [[JXCategoryIndicatorBackgroundView alloc] init];
- backgroundView.size = CGSizeMake(52, 28);
- backgroundView.indicatorColor = UIColor.whiteColor;
- backgroundView.indicatorHeight = 28;
- backgroundView.indicatorWidth = 52;
- backgroundView.indicatorCornerRadius = 14;
-
- _categoryView.indicators = @[backgroundView];
- _categoryView.listContainer = self.listContainerView;
-
- }
- return _categoryView;
- }
其他代码
- - (void)viewDidLoad{
- [super viewDidLoad];
- [self setupViews];
- }
-
- - (void)setupViews{
- [self.view addSubview:self.categoryView];
- [self.categoryView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.height.mas_equalTo(32);
- make.width.mas_equalTo(190);
- make.centerX.equalTo(self.view);
- make.top.equalTo(self.view).offset(23);
- }];
-
- [self.view addSubview:self.listContainerView];
- [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.right.mas_equalTo(self.view);
- make.top.mas_equalTo(self.categoryView.mas_bottom).offset(28);
- make.bottom.mas_equalTo(self.view.mas_bottom);
- }];
- }
-
- - (NSArray<__kindof UIViewController *> *)controllers{
- return
- @[
- self.ADayVC,
- self.AWeakVC,
- self.AMonthVC,
- ];
- }
- - (JXCategoryListContainerView *)listContainerView
- {
- if (!_listContainerView) {
- _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self];
- }
- return _listContainerView;
- }
-
- - (LMContributionListToadayVC *)ADayVC{
- if (!_ADayVC) {
- _ADayVC = [[LMContributionListToadayVC alloc] init];
- _ADayVC.uid = self.uid;
- _ADayVC.liveid = self.liveid;
- _ADayVC.isAnchor = self.isAnchor;
- }
- return _ADayVC;
- }
-
- - (LMContributionListAWeakVC *)AWeakVC{
- if (!_AWeakVC) {
- _AWeakVC = [[LMContributionListAWeakVC alloc] init];
- _AWeakVC.uid = self.uid;
- _AWeakVC.liveid = self.liveid;
- _AWeakVC.isAnchor = self.isAnchor;
- }
- return _AWeakVC;
- }
-
- - (LMContributionListAMonthVC *)AMonthVC{
- if (!_AMonthVC) {
- _AMonthVC = [[LMContributionListAMonthVC alloc] init];
- _AMonthVC.uid = self.uid;
- _AMonthVC.liveid = self.liveid;
- _AMonthVC.isAnchor = self.isAnchor;
- }
- return _AMonthVC;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。