前言
前段時(shí)間一直在做項(xiàng)目,沒(méi)時(shí)間將項(xiàng)目中遇到的東西、問(wèn)題、代碼整理起來(lái),現(xiàn)在空下來(lái)了,趕緊整理一下,前面的項(xiàng)目中用到一個(gè)下拉兩層篩選的功能,所以做成了一個(gè)可以自定義的工具,最多拓展到三層篩選,一層時(shí):可以滿足類似美團(tuán)外賣(mài)的條件下拉篩選,三層是:可以滿足類似地區(qū)多層選擇。下面就介紹下這個(gè)工具怎么用。
功能
- 最多可支持3層篩選。
- 支持單選和多選。
- 多選時(shí),可支持頂部條件框顯示,角標(biāo)顯示。
- 可自定義選擇圖片的樣式。
- 工具對(duì)象是全局單例的,用到的時(shí)候只需拿到單例對(duì)象,然后賦值相應(yīng)屬性,調(diào)用彈出pop方法即可。
如何使用及效果展示
1、單選 + 一層篩選
YYFilterTool *filterTool = [YYFilterTool shareInstance];
filterTool.firstLevelElements = @[@"智能排序",@"離我最近",@"好評(píng)優(yōu)先",@"人氣最高"];
// filterTool.levelType = YYBaseFilterTypeSingleLevel;//默認(rèn)是一層,所以可以不用寫(xiě)
// filterTool.multiSelectionEnable = NO;//默認(rèn)不支持多選,所以可以不寫(xiě)
[filterTool popFilterViewWithStartY:150 startAnimateComplete:nil closeAnimateComplete:nil];
- 效果
1.gif
注意:對(duì)于單選 + 一層篩選,如果你想第一次進(jìn)入時(shí)就已經(jīng)是選擇某一個(gè)條件的狀態(tài)了,那么需要構(gòu)造一個(gè)
FilterSelectIndexModel
對(duì)象,然后賦值給filterTool.currentConditions
中,具體怎么做可以下載demo去看看。
2、多選 + 一層篩選
filterTool.multiSelectionEnable = YES;//允許多選
- 效果
2.gif
3、多選 + 一層篩選 + 頂部條件框
//加一句
filterTool.topConditionEnable = YES;//頂部條件框的顯示
- 效果
3.gif
4、多選 + 三層篩選 + 頂部條件框
YYFilterTool *filterTool = [YYFilterTool shareInstance];
NSMutableArray *firstLevelElements = [NSMutableArray new];
NSMutableArray *secondLevelElements = [NSMutableArray new];
NSMutableArray *thirdLevelElements = [NSMutableArray new];
for (int i = 0; i < 30; i++) {
[firstLevelElements addObject:[NSString stringWithFormat:@"市%i",i]];
NSMutableArray *elements = [NSMutableArray new];
NSMutableArray *elementss = [NSMutableArray new];
for (int j = 0; j < 15; j++) {//random()%30+1
[elements addObject:[NSString stringWithFormat:@"市%i縣%i",i,j]];
NSMutableArray *elementsss = [NSMutableArray new];
for (int k = 0; k < 15; k++) {
[elementsss addObject:[NSString stringWithFormat:@"市%i縣%i鎮(zhèn)%i",i,j,k]];
}
[elementss addObject:elementsss];
}
[secondLevelElements addObject:elements];
[thirdLevelElements addObject:elementss];
}
filterTool.firstLevelElements = firstLevelElements;
filterTool.secondLevelElements = secondLevelElements;
filterTool.thirdLevelElement = thirdLevelElements;
filterTool.levelType = YYBaseFilterTypeThreeLevel;//三層篩選
filterTool.multiSelectionEnable = YES;//多選
filterTool.topConditionEnable = YES;//頂部條件框的顯示
[filterTool popFilterViewWithStartY:150 startAnimateComplete:nil closeAnimateComplete:nil];
- 效果
4.gif
5、多選 + 三層篩選 + 頂部條件框 + 角標(biāo)
filterTool.indexCountShowEnable = YES;//角標(biāo)顯示
- 效果
5.gif
6、自定義圖片
filterTool.selectedBtnHighlightedName = @"1";//設(shè)置選中圖片
filterTool.selectedBtnNormalName = @"2";//設(shè)置沒(méi)選中圖片
- 效果
6.gif
7.gif
7、其他自定義
大家如果想自定義其他東西,比如背景顏色,角標(biāo)樣式,完成按鈕樣式等,可以去源碼中修改,我在源碼中寫(xiě)了有很多注釋,看起來(lái)還是很容易的。
Demo地址
https://github.com/WallaceYou/YYFilterTool
如果想了解如何實(shí)現(xiàn)的小伙伴可以下載下來(lái)看看,這里只介紹如何使用。
最后,希望這篇文章可以幫助到同是程序猿的你,希望我們可以共同努力,學(xué)習(xí),進(jìn)步,如果可以的話,希望可以給我一顆星鼓勵(lì)一下~??