最近做項(xiàng)目的時(shí)候开财,用到了頂部選項(xiàng)卡和底部分頁控制器相關(guān)的功能。之前做的話都是自己手動(dòng)封裝论巍,通過兩個(gè)UIScrollView聯(lián)動(dòng)來實(shí)現(xiàn)兆衅。公司同事給推薦了一個(gè)封裝好的庫地沮,
TYPagerController,內(nèi)部也是通過ScrollView的聯(lián)動(dòng)來實(shí)現(xiàn)的羡亩,不過功能確實(shí)很強(qiáng)大摩疑。有幸研究使用了一下,小結(jié)分享備用畏铆。第一步雷袋,當(dāng)然是導(dǎo)入相應(yīng)的庫文件,引用相關(guān)的頭文件
#import <TYPagerController/TYPagerController.h>
#import <TYPagerController/TYTabPagerBar.h>
辞居,現(xiàn)在用的多的是pod導(dǎo)入楷怒;
第二步,就是具體的用法了瓦灶。引入相關(guān)的協(xié)議鸠删,定義實(shí)例變量。
@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{
//內(nèi)容controller
if (!_pagerController) {
_pagerController = [[TYPagerController alloc]init];
_pagerController.layout.prefetchItemCount = 0;//預(yù)加載個(gè)數(shù)
//pagerController.layout.autoMemoryCache = NO;
// 只有當(dāng)scroll滾動(dòng)動(dòng)畫停止時(shí)才加載pagerview贼陶,用于優(yōu)化滾動(dòng)時(shí)性能
_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];
//此處需要區(qū)分普通用戶和管理員
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;
}
最核心的地方基本就是這些刃泡,它強(qiáng)大的地方有三點(diǎn),一是我可以上下聯(lián)動(dòng)碉怔,并返回當(dāng)前選中項(xiàng)索引烘贴,可以通過通知刷新相關(guān)聯(lián)的頁面;二是我可以動(dòng)態(tài)的設(shè)置頂部選項(xiàng)卡的個(gè)數(shù)撮胧,對(duì)應(yīng)文本的大小和顏色桨踪;三是,底部可以加載view或者controller芹啥。使用過程中遇到的問題主要是锻离,當(dāng)前版本庫里面選中項(xiàng)對(duì)應(yīng)的加粗屬性铺峭,作者用錯(cuò)變量了,需要去庫文件手動(dòng)改一下纳账;