最近做项目的时候,用到了顶部选项卡和底部分页控制器相关的功能。之前做的话都是自己手动封装,通过两个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。使用过程中遇到的问题主要是,当前版本库里面选中项对应的加粗属性,作者用错变量了,需要去库文件手动改一下;

iOS多项选项卡TYTabPagerBar和分页控制器TYPagerController使用小结的更多相关文章

  1. iOS开发网络篇—网络请求(HTTP协议)小结

    iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...

  2. Swift - 判断设备类型开发兼容的iOS应用(iPad使用分隔视图控制器)

    1,分割视图控制器(UISplitViewController) 在iPhone应用中,使用导航控制器由上一层界面进入下一层界面. 但iPad屏幕较大,通常使用SplitViewController来 ...

  3. IOS开发之功能模块--自定义导航控制器类常用自定义的代码

    前言:本文篇幅不多,但是涉及到的内容却是开发中常用的. 涉及的内容: 1.统一设置导航控制器子控制器的返回按钮. 2.因为修改了系统的返回按钮,所以还需要设置手势事件. 3.隐藏底部的工具条. 这里直 ...

  4. iOS - 切换rootViewController时,销毁之前的控制器

    一.iOS在切换根控制器时,如何销毁之前的控制器?(切换rootViewController时注意的内存泄漏) 首先.在iOS的ARC机制下,任何对象,当没有其他对象对他进行强引用时,都会被自动释放. ...

  5. IOS UI-控制器的创建和控制器的View的创建

    一.控制器的创建和控制器的View的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在 ...

  6. iOS:使用block进行类与类,控制器与控制器之间的传值

    介绍:在iOS中类与类,控制器与控制器之间传值的方式有多种,分别是:单例传值.代理传值.通知传值.block传值或者一些偏好设置也可以用来传值.... 每一种传值方式都有各自的优点和缺点,针对不同情况 ...

  7. iOS 学习笔记三【segmentedControl分段控制器详细使用方法】

    在iOS开发过程中,分段控制器的使用频率还是蛮高的,下面是我写的一个简单的demo,大家可以把代码直接复制过去,就可以使用,ios9最新支持. // // ViewController.m // 03 ...

  8. IOS开发学习笔记034-UIScrollView-xib实现分页

    通过xib实现分页功能的封装 1.首先实现xib UIView 的尺寸为300*130,因为准备的图片为600*260. scrollView属性设置如下: 2.新建一个和xib同名的类 2.1 类方 ...

  9. iOS 切换首页-更改tabbar的容器控制器

    最近想到的一个小需求: 首页切换:点击一个切换按钮,能实现首页的风格.排版等变换,原理是用一个新的VC替换掉. 效果如下:   ====>====> 实现方式很简单: 以我的Demo为例, ...

  10. IOS第12天(2,UINavigationController导航控制器)

    ****HMAppDelegate.m @implementation HMAppDelegate - (BOOL)application:(UIApplication *)application d ...

随机推荐

  1. hadoop web界面

    通过界面监控大数据平台运行状态 通过界面查看大数据平台状态 通过大数据平台 Hadoop 的用户界面可以查看平台的计算资源和存储资源.打开 http://master:8088/cluster/nod ...

  2. RPA处理京东滑块拼图验证码

    在进行京东商家后台企业账号的RPA自动化操作过程中,登录环节是必不可少的步骤.然而,这一过程中有时会遇到一种特殊的验证机制--滑块拼图验证码,它的突然出现如同一道屏障,阻碍了自动化的顺利进行.因为只有 ...

  3. 吃透 JVM 诊断方法与工具使用

    JVM(Java虚拟机)是Java程序运行的基础环境,它提供了内存管理.线程管理和性能监控等功能.吃透JVM诊断方法,可以帮助开发者更有效地解决Java应用在运行时遇到的问题.以下是一些常见的JVM诊 ...

  4. CentOS-7离线安装perl

    1.下载相关安装包 CentOS-7 所有rpm包的仓库地址:https://vault.centos.org/7.9.2009/os/x86_64/Packages/ perl-5.16.3-297 ...

  5. HDMI和DP双屏幕连接,对于BIOS来说哪个优先级高——DP连接优先级高于HDMI

    最近被博导忽悠了,说是实验室的国家项目结项了,有几十万的资金没有花掉,于是每个人都有了1W的报销金额,由于是结项所用因此只能报销耗材.我这人呢,平时是绝对不占小便宜的,但这次是个大便宜,于是就有些没把 ...

  6. 新晋 Committer!来自复旦大学的帅哥一枚

    点亮Star️ · 支持我们 https://github.com/apache/dolphinscheduler 最近,社区星力量又迎来一位新晋 Committer,这次是来自复旦大学研究生在读的王 ...

  7. JavaScript设计模式样例二十二 —— 访问者模式

    访问者模式(Visitor Pattern) 定义:使用一个访问者类,改变元素类的执行算法.通过这种方式,元素的执行算法可以随着访问者改变而改变.目的:将数据结构与数据操作分离.场景:您在朋友家做客, ...

  8. 快手 内推码:TYORVzmsw 秋招 应届生/实习生 真正本人内推 已有多人在我内推之后,接连顺利通过了HR筛选、用人部门筛选、面试!

    内推码:TYORVzmsw 校园招聘岗位列表:https://campus.kuaishou.cn/#/campus/jobs?code=TYORVzmsw 真正的本人内部推荐! 已有多人在我内推之后 ...

  9. 3d格式介绍之OBJ格式

    OBJ格式是一种用于3D模型的文件格式,全称为Wavefront OBJ.它由Wavefront Technologies公司开发,最初用于其高级视觉动画软件,但后来广泛应用于各种3D图形软件中. 本 ...

  10. 图文教程:从0到1将项目发布到 Maven 中央仓库

    前言 本文基于官方文档 https://central.sonatype.org/publish/publish-guide/ 编写. 发布步骤: 创建账号 创建用户 Token 创建命名空间 配置 ...