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


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

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

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

      #import <TYPagerController/TYPagerController.h>

      #import <TYPagerController/TYTabPagerBar.h>

      ,现在用的多的是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。使用过程中遇到的问题主要是,当前版本库里面选中项对应的加粗属性,作者用错变量了,需要去库文件手动改一下;

  • 相关阅读:
    ASCII、Unicode和UTF-8等常见字符编码格式介绍
    pycharm创建脚本头文件模板
    pycharm常用设置项和快捷键
    Genymotion安装apk问题
    [Android测试] Appium的一些坑问题错误解决 与 技巧集锦
    Appium+python自动化测试过程中问题
    python客户端和Appium服务端联调出现的问题解决办法
    移动端自动化测试环境搭建
    "http://127.0.0.1:4723/wd/hub"的解释
    wireshark抓包看ECN
  • 原文地址:https://www.cnblogs.com/bigant9527/p/14601518.html
Copyright © 2020-2023  润新知