BRPickerView 封裝的是iOS中經常使用的選擇器組件。高度封裝,只需一句代碼便可完成調用,使用比較靈活支持自定義主題顏色。選擇器類型主要包括:日期選擇器、時間選擇器、地址選擇器、自定義字符串選擇器。git
框架地址:github.com/91renb/BRPi…github
【特別提示】:objective-c
2.2.1
。pod setup
,待更新完成後;再執行 pod search BRPickerView
進行搜索,就會看到最新版本。查看並運行 BRPickerViewDemo.xcodeproj
json
框架Demo運行效果圖1 | 框架Demo運行效果圖2 |
2018-04-27(V2.2.1):數組
- 修復bug,適配iPad和橫屏顯示。
- 優化代碼,提升框架適應性,下降內存消耗。
2018-04-03(V2.2.0):xcode
- 時間選擇器新添加了7種顯示類型(BRDatePickerMode),可根據本身項目的需求選擇性使用。
- 適配橫屏,及 iPhoneX 底部安全區域。
- 修改了最小時間和最大時間的參數名稱(之前版本是傳 NSString 類型, 如今傳 NSDate 類型)
- 修復比較時間大小時出現的bug。
2018-03-19(V2.1.3):安全
- 修改地址選擇器確認選擇後的回調參數。
- 現修改以下:可經過省市區的模型獲取省市區的 name(名稱)、code(id)、index(索引)
resultBlock:^(BRProvinceModel *province, BRCityModel *city, BRAreaModel *area) {}
- 去掉第三方依賴庫
MJExtension
,修改成手動解析地址數據源。
2018-03-11(V2.1.2):微信
- 重命名了Github用戶名,更新項目相關的路徑。(提示:pod以前的版本不受影響)
2018-02-28(V2.1.1):框架
- 修復某些狀況下沒法用bundle加載本地數據源(BRCity.plist)bug。
2018-01-26(V2.1.0):優化
- 給地址選擇器添加了一個方法(見方法4),提供數據源參數,支持外部傳入地區數據源。
- 提示:要注意數據源格式,參考 BRCity.json。能夠把 BRCity.json 文件的內容放到後臺去維護,經過後臺接口獲取地區數據源(即 BRCity.json 文件的內容)。
2018-01-25(V2.0.0):
- 更新了地址數據源(BRCity.plist),地區信息是2018年最新最全的,與微信的地區信息徹底一致。
- 支持自定義默認選擇地址(格式:@[@"浙江省", @"杭州市", @"西湖區"]),支持下次點擊進入地址選擇器時,默認地址爲上次選擇的結果。
- 修改了日期選擇器、地址選擇器、字符串選擇器的接口方法(刪除了以前的方法2)。
- 添加了地址選擇器顯示類型,支持3種顯示:只顯示省份、顯示省份和城市、顯示省市區。
2018-01-05(V1.3.0):
添加取消選擇的回調方法(點擊背景或取消按鈕會執行
cancelBlock
)合併了字符串選擇器 數組數據源和plist數據源對應的方法,
dataSource
參數支持兩種類型:1> 能夠直接傳數組:NSArray類型;
2> 能夠傳plist文件名:NSString類型,帶後綴名,plist文件的內容必須是數組格式。
2018-01-02(V1.2.0):
- 添加支持自定義主題顏色的方法。
2017-11-26(V1.1.0):
更換第三方依賴庫。
用MJExtension 替換了 原來的YYModel,之前沒有注意導入YYModel,同時又導入YYKit會致使重複導入而衝突(另外使用YYModel時,手動導入和pod導入 其中的頭文件和方法名也不同,因此很容易出錯)。
2017-11-16(V1.0.0):
- 初始版本!
在 Podfile 中添加 pod 'BRPickerView'
。
執行 pod install
或 pod update
。
導入頭文件 #import <BRPickerView.h>
。
將與 README.md
同級目錄下的 BRPickerView
文件夾拽入項目中
導入頭文件 #import "BRPickerView.h"
。
BRDatePickerView
查看 BRDatePickerView.h 頭文件,裏面提供了3個方法,可根據本身的需求選擇其中的一個方法進行使用。
/**
* 1.顯示時間選擇器
*
* @param title 標題
* @param dateType 日期顯示類型
* @param defaultSelValue 默認選中的時間(值爲空/值格式錯誤時,默認就選中如今的時間)
* @param resultBlock 選擇結果的回調
*
*/
+ (void)showDatePickerWithTitle:(NSString *)title
dateType:(BRDatePickerMode)dateType
defaultSelValue:(NSString *)defaultSelValue
resultBlock:(BRDateResultBlock)resultBlock;
/**
* 2.顯示時間選擇器(支持 設置自動選擇 和 自定義主題顏色)
*
* @param title 標題
* @param dateType 日期顯示類型
* @param defaultSelValue 默認選中的時間(值爲空/值格式錯誤時,默認就選中如今的時間)
* @param minDate 最小時間,可爲空(請使用 NSDate+BRPickerView 分類中和顯示類型格式對應的方法建立 minDate)
* @param maxDate 最大時間,可爲空(請使用 NSDate+BRPickerView 分類中和顯示類型格式對應的方法建立 maxDate)
* @param isAutoSelect 是否自動選擇,即選擇完(滾動完)執行結果回調,傳選擇的結果值
* @param themeColor 自定義主題顏色
* @param resultBlock 選擇結果的回調
*
*/
+ (void)showDatePickerWithTitle:(NSString *)title
dateType:(BRDatePickerMode)dateType
defaultSelValue:(NSString *)defaultSelValue
minDate:(NSDate *)minDate
maxDate:(NSDate *)maxDate
isAutoSelect:(BOOL)isAutoSelect
themeColor:(UIColor *)themeColor
resultBlock:(BRDateResultBlock)resultBlock;
/**
* 3.顯示時間選擇器(支持 設置自動選擇、自定義主題顏色、取消選擇的回調)
*
* @param title 標題
* @param dateType 日期顯示類型
* @param defaultSelValue 默認選中的時間(值爲空/值格式錯誤時,默認就選中如今的時間)
* @param minDate 最小時間,可爲空(請使用 NSDate+BRPickerView 分類中和顯示類型格式對應的方法建立 minDate)
* @param maxDate 最大時間,可爲空(請使用 NSDate+BRPickerView 分類中和顯示類型格式對應的方法建立 maxDate)
* @param isAutoSelect 是否自動選擇,即選擇完(滾動完)執行結果回調,傳選擇的結果值
* @param themeColor 自定義主題顏色
* @param resultBlock 選擇結果的回調
* @param cancelBlock 取消選擇的回調
*
*/
+ (void)showDatePickerWithTitle:(NSString *)title
dateType:(BRDatePickerMode)dateType
defaultSelValue:(NSString *)defaultSelValue
minDate:(NSDate *)minDate
maxDate:(NSDate *)maxDate
isAutoSelect:(BOOL)isAutoSelect
themeColor:(UIColor *)themeColor
resultBlock:(BRDateResultBlock)resultBlock
cancelBlock:(BRDateCancelBlock)cancelBlock;
複製代碼
NSDate *minDate = [NSDate br_setYear:1990 month:3 day:12];
NSDate *maxDate = [NSDate date];
[BRDatePickerView showDatePickerWithTitle:@"出生日期" dateType:BRDatePickerModeYMD defaultSelValue:weakSelf.birthdayTF.text minDate:minDate maxDate:maxDate isAutoSelect:YES themeColor:nil resultBlock:^(NSString *selectValue) {
weakSelf.birthdayTF.text = selectValue;
} cancelBlock:^{
NSLog(@"點擊了背景或取消按鈕");
}];
複製代碼
/// 彈出日期類型
typedef NS_ENUM(NSInteger, BRDatePickerMode) {
// --- 如下4種是系統自帶的樣式 ---
// UIDatePickerModeTime
BRDatePickerModeTime, // HH:mm
// UIDatePickerModeDate
BRDatePickerModeDate, // yyyy-MM-dd
// UIDatePickerModeDateAndTime
BRDatePickerModeDateAndTime, // yyyy-MM-dd HH:mm
// UIDatePickerModeCountDownTimer
BRDatePickerModeCountDownTimer, // HH:mm
// --- 如下7種是自定義樣式 ---
// 年月日時分
BRDatePickerModeYMDHM, // yyyy-MM-dd HH:mm
// 月日時分
BRDatePickerModeMDHM, // MM-dd HH:mm
// 年月日
BRDatePickerModeYMD, // yyyy-MM-dd
// 年月
BRDatePickerModeYM, // yyyy-MM
// 年
BRDatePickerModeY, // yyyy
// 月日
BRDatePickerModeMD, // MM-dd
// 時分
BRDatePickerModeHM // HH:mm
};
複製代碼
如下4種樣式是使用 UIDatePicker 類 進行封裝的,支持循環滾動
樣式1:BRDatePickerModeTime | 樣式2:BRDatePickerModeDate |
樣式3:BRDatePickerModeDateAndTime | 樣式4:BRDatePickerModeCountDownTimer |
如下7種樣式是使用 UIPickerView 類 進行封裝的。
樣式5: BRDatePickerModeYMDHM | 樣式6: BRDatePickerModeMDHM |
樣式7: BRDatePickerModeYMD | 樣式8: BRDatePickerModeYM |
樣式9: BRDatePickerModeY | 樣式10: BRDatePickerModeMD |
樣式11: BRDatePickerModeHM |
BRAddressPickerView
查看 BRAddressPickerView.h 頭文件,裏面提供了4個方法,可根據本身的需求選擇其中的一個方法進行使用。
/**
* 1.顯示地址選擇器
*
* @param defaultSelectedArr 默認選中的值(傳數組,如:@[@"浙江省", @"杭州市", @"西湖區"])
* @param resultBlock 選擇後的回調
*
*/
+ (void)showAddressPickerWithDefaultSelected:(NSArray *)defaultSelectedArr
resultBlock:(BRAddressResultBlock)resultBlock;
/**
* 2.顯示地址選擇器(支持 設置自動選擇 和 自定義主題顏色)
*
* @param defaultSelectedArr 默認選中的值(傳數組,如:@[@"浙江省", @"杭州市", @"西湖區"])
* @param isAutoSelect 是否自動選擇,即選擇完(滾動完)執行結果回調,傳選擇的結果值
* @param themeColor 自定義主題顏色
* @param resultBlock 選擇後的回調
*
*/
+ (void)showAddressPickerWithDefaultSelected:(NSArray *)defaultSelectedArr
isAutoSelect:(BOOL)isAutoSelect
themeColor:(UIColor *)themeColor
resultBlock:(BRAddressResultBlock)resultBlock;
/**
* 3.顯示地址選擇器(支持 設置選擇器類型、設置自動選擇、自定義主題顏色、取消選擇的回調)
*
* @param showType 地址選擇器顯示類型
* @param defaultSelectedArr 默認選中的值(傳數組,如:@[@"浙江省", @"杭州市", @"西湖區"])
* @param isAutoSelect 是否自動選擇,即選擇完(滾動完)執行結果回調,傳選擇的結果值
* @param themeColor 自定義主題顏色
* @param resultBlock 選擇後的回調
* @param cancelBlock 取消選擇的回調
*
*/
+ (void)showAddressPickerWithShowType:(BRAddressPickerMode)showType
defaultSelected:(NSArray *)defaultSelectedArr
isAutoSelect:(BOOL)isAutoSelect
themeColor:(UIColor *)themeColor
resultBlock:(BRAddressResultBlock)resultBlock
cancelBlock:(BRAddressCancelBlock)cancelBlock;
/**
* 4.顯示地址選擇器(支持 設置選擇器類型、傳入地區數據源、設置自動選擇、自定義主題顏色、取消選擇的回調)
*
* @param showType 地址選擇器顯示類型
* @param dataSource 地區數據源
* @param defaultSelectedArr 默認選中的值(傳數組,如:@[@"浙江省", @"杭州市", @"西湖區"])
* @param isAutoSelect 是否自動選擇,即選擇完(滾動完)執行結果回調,傳選擇的結果值
* @param themeColor 自定義主題顏色
* @param resultBlock 選擇後的回調
* @param cancelBlock 取消選擇的回調
*
*/
+ (void)showAddressPickerWithShowType:(BRAddressPickerMode)showType
dataSource:(NSArray *)dataSource
defaultSelected:(NSArray *)defaultSelectedArr
isAutoSelect:(BOOL)isAutoSelect
themeColor:(UIColor *)themeColor
resultBlock:(BRAddressResultBlock)resultBlock
cancelBlock:(BRAddressCancelBlock)cancelBlock;
複製代碼
// 【轉換】:以@" "子字符串爲基準將字符串分離成數組,如:@"浙江省 杭州市 西湖區" ——》@[@"浙江省", @"杭州市", @"西湖區"]
NSArray *defaultSelArr = [weakSelf.addressTF.text componentsSeparatedByString:@" "];
[BRAddressPickerView showAddressPickerWithShowType:BRAddressPickerModeArea defaultSelected:defaultSelArr isAutoSelect:YES themeColor:nil resultBlock:^(BRProvinceModel *province, BRCityModel *city, BRAreaModel *area) {
weakSelf.addressTF.text = [NSString stringWithFormat:@"%@ %@ %@", province.name, city.name, area.name];
} cancelBlock:^{
NSLog(@"點擊了背景視圖或取消按鈕");
}];
複製代碼
樣式1:BRAddressPickerModeProvince | 樣式2:BRAddressPickerModeCity |
樣式3:BRAddressPickerModeArea |
BRStringPickerView
查看 BRStringPickerView.h 頭文件,裏面提供了3個方法,可根據本身的需求選擇其中的一個方法進行使用。
/**
* 1.顯示自定義字符串選擇器
*
* @param title 標題
* @param dataSource 數據源(1.直接傳數組:NSArray類型;2.能夠傳plist文件名:NSString類型,帶後綴名,plist文件內容要是數組格式)
* @param defaultSelValue 默認選中的行(單列傳字符串,多列傳一維數組)
* @param resultBlock 選擇後的回調
*
*/
+ (void)showStringPickerWithTitle:(NSString *)title
dataSource:(id)dataSource
defaultSelValue:(id)defaultSelValue
resultBlock:(BRStringResultBlock)resultBlock;
/**
* 2.顯示自定義字符串選擇器(支持 設置自動選擇 和 自定義主題顏色)
*
* @param title 標題
* @param dataSource 數據源(1.直接傳數組:NSArray類型;2.能夠傳plist文件名:NSString類型,帶後綴名,plist文件內容要是數組格式)
* @param defaultSelValue 默認選中的行(單列傳字符串,多列傳一維數組)
* @param isAutoSelect 是否自動選擇,即選擇完(滾動完)執行結果回調,傳選擇的結果值
* @param themeColor 自定義主題顏色
* @param resultBlock 選擇後的回調
*
*/
+ (void)showStringPickerWithTitle:(NSString *)title
dataSource:(id)dataSource
defaultSelValue:(id)defaultSelValue
isAutoSelect:(BOOL)isAutoSelect
themeColor:(UIColor *)themeColor
resultBlock:(BRStringResultBlock)resultBlock;
/**
* 3.顯示自定義字符串選擇器(支持 設置自動選擇、自定義主題顏色、取消選擇的回調)
*
* @param title 標題
* @param dataSource 數據源(1.直接傳數組:NSArray類型;2.能夠傳plist文件名:NSString類型,帶後綴名,plist文件內容要是數組格式)
* @param defaultSelValue 默認選中的行(單列傳字符串,多列傳一維數組)
* @param isAutoSelect 是否自動選擇,即選擇完(滾動完)執行結果回調,傳選擇的結果值
* @param themeColor 自定義主題顏色
* @param resultBlock 選擇後的回調
* @param cancelBlock 取消選擇的回調
*
*/
+ (void)showStringPickerWithTitle:(NSString *)title
dataSource:(id)dataSource
defaultSelValue:(id)defaultSelValue
isAutoSelect:(BOOL)isAutoSelect
themeColor:(UIColor *)themeColor
resultBlock:(BRStringResultBlock)resultBlock
cancelBlock:(BRStringCancelBlock)cancelBlock;
複製代碼
// 自定義單列字符串
//NSArray *dataSource = @[@"大專如下", @"大專", @"本科", @"碩士", @"博士", @"博士後"];
NSString *dataSource = @"testData1.plist"; // 能夠將數據源(上面的數組)放到plist文件中
[BRStringPickerView showStringPickerWithTitle:@"學歷" dataSource:dataSource defaultSelValue:weakSelf.educationTF.text isAutoSelect:YES themeColor:nil resultBlock:^(id selectValue) {
weakSelf.educationTF.text = selectValue;
} cancelBlock:^{
NSLog(@"點擊了背景視圖或取消按鈕");
}];
// 自定義多列字符串
NSArray *dataSource = @[@[@"第1周", @"第2周", @"第3周", @"第4周", @"第5周", @"第6周", @"第7周"], @[@"第1天", @"第2天", @"第3天", @"第4天", @"第5天", @"第6天", @"第7天"]];
//NSString *dataSource = @"testData3.plist"; // 能夠將數據源(上面的數組)放到plist文件中
NSArray *defaultSelArr = [weakSelf.otherTF.text componentsSeparatedByString:@","];
[BRStringPickerView showStringPickerWithTitle:@"自定義多列字符串" dataSource:dataSource defaultSelValue:defaultSelArr isAutoSelect:YES themeColor:RGB_HEX(0xff7998, 1.0f) resultBlock:^(id selectValue) {
weakSelf.otherTF.text = [NSString stringWithFormat:@"%@,%@", selectValue[0], selectValue[1]];
} cancelBlock:^{
NSLog(@"點擊了背景視圖或取消按鈕");
}];
複製代碼
單列字符串選擇器(默認主題色樣式) | 雙列字符串選擇器(自定義主題色樣式) |
3列字符串選擇器(自定義主題色樣式) | 4列字符串選擇器(自定義主題色樣式) |
BRPickerView 使用 MIT 許可證,詳情見 LICENSE 文件。