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。使用过程中遇到的问题主要是,当前版本库里面选中项对应的加粗属性,作者用错变量了,需要去库文件手动改一下;
iOS多项选项卡TYTabPagerBar和分页控制器TYPagerController使用小结的更多相关文章
- iOS开发网络篇—网络请求(HTTP协议)小结
iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...
- Swift - 判断设备类型开发兼容的iOS应用(iPad使用分隔视图控制器)
1,分割视图控制器(UISplitViewController) 在iPhone应用中,使用导航控制器由上一层界面进入下一层界面. 但iPad屏幕较大,通常使用SplitViewController来 ...
- IOS开发之功能模块--自定义导航控制器类常用自定义的代码
前言:本文篇幅不多,但是涉及到的内容却是开发中常用的. 涉及的内容: 1.统一设置导航控制器子控制器的返回按钮. 2.因为修改了系统的返回按钮,所以还需要设置手势事件. 3.隐藏底部的工具条. 这里直 ...
- iOS - 切换rootViewController时,销毁之前的控制器
一.iOS在切换根控制器时,如何销毁之前的控制器?(切换rootViewController时注意的内存泄漏) 首先.在iOS的ARC机制下,任何对象,当没有其他对象对他进行强引用时,都会被自动释放. ...
- IOS UI-控制器的创建和控制器的View的创建
一.控制器的创建和控制器的View的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在 ...
- iOS:使用block进行类与类,控制器与控制器之间的传值
介绍:在iOS中类与类,控制器与控制器之间传值的方式有多种,分别是:单例传值.代理传值.通知传值.block传值或者一些偏好设置也可以用来传值.... 每一种传值方式都有各自的优点和缺点,针对不同情况 ...
- iOS 学习笔记三【segmentedControl分段控制器详细使用方法】
在iOS开发过程中,分段控制器的使用频率还是蛮高的,下面是我写的一个简单的demo,大家可以把代码直接复制过去,就可以使用,ios9最新支持. // // ViewController.m // 03 ...
- IOS开发学习笔记034-UIScrollView-xib实现分页
通过xib实现分页功能的封装 1.首先实现xib UIView 的尺寸为300*130,因为准备的图片为600*260. scrollView属性设置如下: 2.新建一个和xib同名的类 2.1 类方 ...
- iOS 切换首页-更改tabbar的容器控制器
最近想到的一个小需求: 首页切换:点击一个切换按钮,能实现首页的风格.排版等变换,原理是用一个新的VC替换掉. 效果如下: ====>====> 实现方式很简单: 以我的Demo为例, ...
- IOS第12天(2,UINavigationController导航控制器)
****HMAppDelegate.m @implementation HMAppDelegate - (BOOL)application:(UIApplication *)application d ...
随机推荐
- Jmeter循环控制器
循环控制器(Loop Controller),循环控制器会将该控制器里面所有请求循环运行指定次数 循环次数:勾选"永远"则程序会一直循环运行不会停止,不勾选"永远&quo ...
- EF Core性能优化技巧
代码层面的优化 1. 使用实例池 EFCore2.0 为DbContext引入新的注册方式:透明地注册了 DbContext实例池,使用这种方式可以避免始终创建新的实例,EF Core 将重置其状态并 ...
- (二)MongoDB的在SpringBoot中的应用
我来填之前MongoDB的坑了,项目中又用到MongoDB的我又想起来了,我这拖延症也是没谁了. 1.在pom.xml中引入依赖 <dependency> <groupId>o ...
- 【Java】Properties 配置信息类
Properties 配置信息类 Properties 是HashTable的子类,该对象用于处理属性文件 由于属性文件的Key.Value都是字符串类型,所以Properties里的Key和Valu ...
- 【Git】介绍与概述
版本控制工具应该具备的功能? 协同修改 多人并行不悖的修改服务器端的同一个文件. 数据备份 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态. 版本管理 在保存每一个版本的文件信息的时候 ...
- 【Hibernate】Re01 快速入门
官网地址: http://hibernate.org/orm/releases/5.4/ 地址: https://bintray.com/hibernate/artifacts/hibernate-o ...
- 如何在AWS上构建Apache DolphinScheduler
引言 随着云计算技术的发展,Amazon Web Services (AWS) 作为一个开放的平台,一直在帮助开发者更好的在云上构建和使用开源软件,同时也与开源社区紧密合作,推动开源项目的发展. 本文 ...
- SeaTunnel毕业!首个国人主导的数据集成项目成为Apache顶级项目
采访嘉宾 | 郭炜.高俊 编辑 | Tina 北京时间 2023 年 6 月 1 日,全球最大的开源软件基金会 Apache Software Foundation(以下简称 ASF)正式宣布 Apa ...
- 零基础学习人工智能—Python—Pytorch学习(二)
前言 数学的学习跟数学的计算是要分开的,现在回头再去看大学的高数和线性代数,如果只是学习的话,其实一门课程3天,也就学完了. 学校的课程之所以上那么久,其实是为了考试,也就是为计算准备的.计算有意义的 ...
- 【动画进阶】神奇的卡片 Hover 效果与 Blur 的特性探究
本文,我们将一起探讨探讨,如下所示的一个卡片 Hover 动画,应该如何实现: 这个效果的几个难点: 鼠标移动的过程中,展示当前卡片边缘的 border 以及发光效果: 效果只出现在鼠标附近?这一块的 ...