• iOS多项选项卡TYTabPagerBar和分页控制器TYPagerController使用小结


    最近做项目的时候,用到了顶部选项卡和底部分页控制器相关的功能。之前做的话都是自己手动封装,通过两个UIScrollView联动来实现。公司同事给推荐了一个封装好的库,

    TYPagerController,内部也是通过ScrollView的联动来实现的,不过功能确实很强大。有幸研究使用了一下,小结分享备用。

      第一步,当然是导入相应的库文件,引用相关的头文件

      #import

      #import

      ,现在用的多的是pod导入;

      第二步,就是具体的用法了。引入相关的协议,定义实例变量

      @property (nonatomic, strong) TYTabPagerBar *tabPagerBar;

      @property (nonatomic, strong) TYPagerController *pagerController;

      

    -(TYTabPagerBar *)tabPagerBar{

        //顶部bar

        if (!_tabPagerBar) {

            _tabPagerBar = [[TYTabPagerBar alloc]init];

            _tabPagerBar.layout.barStyle = TYPagerBarStyleProgressElasticView;

            _tabPagerBar.layout.cellSpacing = 20;

            _tabPagerBar.layout.cellEdging = 0;

            _tabPagerBar.layout.normalTextFont = K_CC_FONT(16);

            _tabPagerBar.layout.selectedTextFont = K_CC_FONT_SEMIBOLD(18);

            _tabPagerBar.layout.normalTextColor = K_CC_COLOR_STRING(@"#666666");

            _tabPagerBar.layout.selectedTextColor = K_CC_COLOR_STRING(@"#6294FF");//K_CC_COLOR_BLUE;

            _tabPagerBar.layout.adjustContentCellsCenter = YES;

            _tabPagerBar.layout.progressColor = K_CC_COLOR_STRING(@"#6294FF");

            _tabPagerBar.layout.textColorProgressEnable=YES;

            _tabPagerBar.dataSource = self;

            _tabPagerBar.delegate = self;

            [_tabPagerBar registerClass:[TYTabPagerBarCell class] forCellWithReuseIdentifier:[TYTabPagerBarCell cellIdentifier]];

        }

        return _tabPagerBar;

    }

    -(TYPagerController *)pagerController{

        //内容controller

        if (!_pagerController) {

            _pagerController = [[TYPagerController alloc]init];

            _pagerController.layout.prefetchItemCount = 0;//预加载个数

            //pagerController.layout.autoMemoryCache = NO;

            // 只有当scroll滚动动画停止时才加载pagerview,用于优化滚动时性能

            _pagerController.layout.addVisibleItemOnlyWhenScrollAnimatedEnd = YES;

            _pagerController.automaticallySystemManagerViewAppearanceMethods = NO;

            _pagerController.dataSource = self;

            _pagerController.delegate = self;

            _pagerController.view.backgroundColor = K_CC_GRAY_BG_COLOR;

            _pagerController.scrollView.backgroundColor = K_CC_GRAY_BG_COLOR;

        }

        return _pagerController;

    }

      

    - (UIViewController *)pagerController:(TYPagerController *)pagerController controllerForIndex:(NSInteger)index prefetching:(BOOL)prefetching {

        CCHighSeasPoolListViewController *VC = [[CCHighSeasPoolListViewController alloc]init];

        //此处需要区分普通用户和管理员

        if ([self.marketSeaRole isEqualToString:@"normal"]) {

            if (index== 0) {

                VC.condition=@"未分配";

            }else if (index== 1) {

                VC.condition=@"已分配";

            }else if (index== 2) {

                //客户公海池

                if ([self.itemtitle isEqualToString:@"acf202011accmksea"]) {

                    VC.condition=@"已成交";

                }else{

                    VC.condition=@"已成交";

                }

            }else {

                VC.condition=@"自建";

            }

        }else{//管理员

            if (index== 0) {

                VC.condition=@"未分配";

            }else if (index== 1) {

                VC.condition=@"已分配";

            }else if (index== 2) {

                VC.condition=@"已废弃";

            }else if (index== 3) {

                //客户公海池

                if ([self.itemtitle isEqualToString:@"acf202011accmksea"]) {

                    VC.condition=@"已成交";

                }else{

                    VC.condition=@"已成交";

                }

            }else {

                VC.condition=@"自建";

            }

        }

        VC.itemtitle=self.itemtitle;

        CCMoreListModel *moreModel=[self.dataSeasList objectAtIndex:self.currentSeasItem];

        VC.marketSeaId=moreModel.ID;

        VC.dataButtonList=self.dataButtonList;

        VC.dataSeasLeftList=self.dataSeasLeftList;

        VC.querysize=self.querysize;

        VC.marketSeaRole=self.marketSeaRole;

        VC.dataSeasPoolList=self.dataSeasList;

        return VC;

    }

      最核心的地方基本就是这些,它强大的地方有三点,一是我可以上下联动,并返回当前选中项索引,可以通过通知刷新相关联的页面;二是我可以动态的设置顶部选项卡的个数,对应文本的大小和颜色;三是,底部可以加载view或者controller。使用过程中遇到的问题主要是,当前版本库里面选中项对应的加粗属性,作者用错变量了,需要去库文件手动改一下;

     

  • 相关阅读:
    Python并发编程简介
    【我的Android进阶之旅】在Android中使用MediaPipe库在实时视频源上实现人脸网格Face Mesh的绘制
    web前端期末大作业 html+css学生心理 7页主题网页设计
    CNN基础与LeNet框架
    robfig/cron-go cron定时任务库架构剖析
    天天在公司刷招聘网站,我被老板发现了
    人工智能常用资料及网址
    嵌入式接口技术基础(笔记更新版本)
    关于使用Linkage mapper 构建生态网络的数据说明
    学习-Java输入输出之对象IO流之序列化一个对象
  • 原文地址:https://blog.csdn.net/kuuailetianzi/article/details/127975767