部分需求修改
This commit is contained in:
@@ -17,10 +17,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nullable, nonatomic, copy) NSString *code;
|
||||
/** 省的名称 */
|
||||
@property (nullable, nonatomic, copy) NSString *name;
|
||||
/** 省的索引 */
|
||||
@property (nonatomic, assign) NSInteger index;
|
||||
/** 城市数组 */
|
||||
@property (nullable, nonatomic, copy) NSArray *citylist;
|
||||
/** 记录省选择的索引位置 */
|
||||
@property (nonatomic, assign) NSInteger index;
|
||||
|
||||
@end
|
||||
|
||||
@@ -30,10 +30,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nullable, nonatomic, copy) NSString *code;
|
||||
/** 市的名称 */
|
||||
@property (nullable, nonatomic, copy) NSString *name;
|
||||
/** 市的索引 */
|
||||
@property (nonatomic, assign) NSInteger index;
|
||||
/** 地区数组 */
|
||||
@property (nullable, nonatomic, copy) NSArray *arealist;
|
||||
/** 记录市选择的索引位置 */
|
||||
@property (nonatomic, assign) NSInteger index;
|
||||
|
||||
@end
|
||||
|
||||
@@ -43,7 +43,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nullable, nonatomic, copy) NSString *code;
|
||||
/** 区的名称 */
|
||||
@property (nullable, nonatomic, copy) NSString *name;
|
||||
/** 记录区选择的索引位置 */
|
||||
/** 区的索引 */
|
||||
@property (nonatomic, assign) NSInteger index;
|
||||
|
||||
@end
|
||||
|
||||
@@ -445,10 +445,6 @@
|
||||
self.pickerView.frame = CGRectMake(0, pickerHeaderViewHeight, view.bounds.size.width, view.bounds.size.height - pickerHeaderViewHeight - pickerFooterViewHeight);
|
||||
[self addSubview:self.pickerView];
|
||||
} else {
|
||||
// iOS16:重新设置 pickerView 高度(解决懒加载设置frame不生效问题)
|
||||
CGFloat pickerHeaderViewHeight = self.pickerHeaderView ? self.pickerHeaderView.bounds.size.height : 0;
|
||||
self.pickerView.frame = CGRectMake(0, self.pickerStyle.titleBarHeight + pickerHeaderViewHeight, self.keyView.bounds.size.width, self.pickerStyle.pickerHeight);
|
||||
|
||||
[self.alertView addSubview:self.pickerView];
|
||||
}
|
||||
|
||||
|
||||
12
Pods/BRPickerView/BRPickerView/Base/BRBaseView.m
generated
12
Pods/BRPickerView/BRPickerView/Base/BRBaseView.m
generated
@@ -300,18 +300,6 @@
|
||||
}
|
||||
|
||||
[self.keyView addSubview:self];
|
||||
|
||||
// iOS16:重新设置 alertView 高度(解决懒加载设置frame不生效问题)
|
||||
CGFloat accessoryViewHeight = 0;
|
||||
if (self.pickerHeaderView) {
|
||||
accessoryViewHeight += self.pickerHeaderView.bounds.size.height;
|
||||
}
|
||||
if (self.pickerFooterView) {
|
||||
accessoryViewHeight += self.pickerFooterView.bounds.size.height;
|
||||
}
|
||||
CGFloat height = self.pickerStyle.titleBarHeight + self.pickerStyle.pickerHeight + self.pickerStyle.paddingBottom + accessoryViewHeight;
|
||||
self.alertView.frame = CGRectMake(0, self.keyView.bounds.size.height - height, self.keyView.bounds.size.width, height);
|
||||
|
||||
// 动画前初始位置
|
||||
CGRect rect = self.alertView.frame;
|
||||
rect.origin.y = self.bounds.size.height;
|
||||
|
||||
@@ -17,9 +17,6 @@
|
||||
"分" = " ";
|
||||
"秒" = " ";
|
||||
|
||||
"周" = " ";
|
||||
"季度" = " ";
|
||||
|
||||
"上午" = "AM";
|
||||
"下午" = "PM";
|
||||
|
||||
|
||||
@@ -17,9 +17,6 @@
|
||||
"分" = "分";
|
||||
"秒" = "秒";
|
||||
|
||||
"周" = "周";
|
||||
"季度" = "季度";
|
||||
|
||||
"上午" = "上午";
|
||||
"下午" = "下午";
|
||||
|
||||
|
||||
@@ -17,9 +17,6 @@
|
||||
"分" = "分";
|
||||
"秒" = "秒";
|
||||
|
||||
"周" = "周";
|
||||
"季度" = "季度";
|
||||
|
||||
"上午" = "上午";
|
||||
"下午" = "下午";
|
||||
|
||||
|
||||
@@ -49,15 +49,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/** 获取 secondArr 数组 */
|
||||
- (NSArray *)getSecondArr:(NSInteger)year month:(NSInteger)month day:(NSInteger)day hour:(NSInteger)hour minute:(NSInteger)minute;
|
||||
|
||||
/** 获取 monthWeekArr 数组 */
|
||||
- (NSArray *)getMonthWeekArr:(NSInteger)year month:(NSInteger)month;
|
||||
|
||||
/** 获取 yearWeekArr 数组 */
|
||||
- (NSArray *)getYearWeekArr:(NSInteger)year;
|
||||
|
||||
/** 获取 quarterArr 数组 */
|
||||
- (NSArray *)getQuarterArr:(NSInteger)year;
|
||||
|
||||
/** 添加 pickerView */
|
||||
- (void)setupPickerView:(UIView *)pickerView toView:(UIView *)view;
|
||||
|
||||
@@ -80,10 +71,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
- (NSString *)getSecondText:(NSArray *)secondArr row:(NSInteger)row;
|
||||
|
||||
- (NSString *)getWeekText:(NSArray *)weekArr row:(NSInteger)row;
|
||||
|
||||
- (NSString *)getQuarterText:(NSArray *)quarterArr row:(NSInteger)row;
|
||||
|
||||
- (NSString *)getAMText;
|
||||
|
||||
- (NSString *)getPMText;
|
||||
@@ -100,10 +87,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
- (NSString *)getSecondUnit;
|
||||
|
||||
- (NSString *)getWeekUnit;
|
||||
|
||||
- (NSString *)getQuarterUnit;
|
||||
|
||||
- (NSInteger)getIndexWithArray:(NSArray *)array object:(NSString *)obj;
|
||||
|
||||
@end
|
||||
|
||||
@@ -368,69 +368,6 @@ BRSYNTH_DUMMY_CLASS(BRDatePickerView_BR)
|
||||
return [tempArr copy];
|
||||
}
|
||||
|
||||
#pragma mark - 获取 monthWeekArr 数组
|
||||
- (NSArray *)getMonthWeekArr:(NSInteger)year month:(NSInteger)month {
|
||||
NSInteger startWeek = 1;
|
||||
NSInteger endWeek = [NSDate br_getWeeksOfMonthInYear:year month:month];
|
||||
if (year == self.minDate.br_year && month == self.minDate.br_month) {
|
||||
startWeek = self.minDate.br_monthWeek;
|
||||
}
|
||||
if (year == self.maxDate.br_year && month == self.maxDate.br_month) {
|
||||
endWeek = self.maxDate.br_monthWeek;
|
||||
}
|
||||
NSMutableArray *tempArr = [[NSMutableArray alloc]init];
|
||||
for (NSInteger i = startWeek; i <= endWeek; i++) {
|
||||
[tempArr addObject:[self getMDHMSNumber:i]];
|
||||
}
|
||||
if (self.isDescending) {
|
||||
return [[tempArr reverseObjectEnumerator] allObjects];
|
||||
}
|
||||
|
||||
return [tempArr copy];
|
||||
}
|
||||
|
||||
#pragma mark - 获取 yearWeekArr 数组
|
||||
- (NSArray *)getYearWeekArr:(NSInteger)year {
|
||||
NSInteger startWeek = 1;
|
||||
NSInteger endWeek = [NSDate br_getWeeksOfYearInYear:year];
|
||||
if (year == self.minDate.br_year) {
|
||||
startWeek = self.minDate.br_yearWeek;
|
||||
}
|
||||
if (year == self.maxDate.br_year) {
|
||||
endWeek = self.maxDate.br_yearWeek;
|
||||
}
|
||||
NSMutableArray *tempArr = [[NSMutableArray alloc]init];
|
||||
for (NSInteger i = startWeek; i <= endWeek; i++) {
|
||||
[tempArr addObject:[self getMDHMSNumber:i]];
|
||||
}
|
||||
if (self.isDescending) {
|
||||
return [[tempArr reverseObjectEnumerator] allObjects];
|
||||
}
|
||||
|
||||
return [tempArr copy];
|
||||
}
|
||||
|
||||
#pragma mark - 获取 quarterArr 数组
|
||||
- (NSArray *)getQuarterArr:(NSInteger)year {
|
||||
NSInteger startQuarter = 1;
|
||||
NSInteger endQuarter = [NSDate br_getQuartersInYear:year];
|
||||
if (year == self.minDate.br_year) {
|
||||
startQuarter = self.minDate.br_quarter;
|
||||
}
|
||||
if (year == self.maxDate.br_year) {
|
||||
endQuarter = self.maxDate.br_quarter;
|
||||
}
|
||||
NSMutableArray *tempArr = [[NSMutableArray alloc]init];
|
||||
for (NSInteger i = startQuarter; i <= endQuarter; i++) {
|
||||
[tempArr addObject:[self getMDHMSNumber:i]];
|
||||
}
|
||||
if (self.isDescending) {
|
||||
return [[tempArr reverseObjectEnumerator] allObjects];
|
||||
}
|
||||
|
||||
return [tempArr copy];
|
||||
}
|
||||
|
||||
#pragma mark - 添加 pickerView
|
||||
- (void)setupPickerView:(UIView *)pickerView toView:(UIView *)view {
|
||||
if (view) {
|
||||
@@ -444,10 +381,6 @@ BRSYNTH_DUMMY_CLASS(BRDatePickerView_BR)
|
||||
pickerView.frame = CGRectMake(0, pickerHeaderViewHeight, view.bounds.size.width, view.bounds.size.height - pickerHeaderViewHeight - pickerFooterViewHeight);
|
||||
[self addSubview:pickerView];
|
||||
} else {
|
||||
// iOS16:重新设置 pickerView 高度(解决懒加载设置frame不生效问题)
|
||||
CGFloat pickerHeaderViewHeight = self.pickerHeaderView ? self.pickerHeaderView.bounds.size.height : 0;
|
||||
pickerView.frame = CGRectMake(0, self.pickerStyle.titleBarHeight + pickerHeaderViewHeight, self.keyView.bounds.size.width, self.pickerStyle.pickerHeight);
|
||||
|
||||
[self.alertView addSubview:pickerView];
|
||||
}
|
||||
}
|
||||
@@ -554,7 +487,7 @@ BRSYNTH_DUMMY_CLASS(BRDatePickerView_BR)
|
||||
NSInteger index = [monthString integerValue] - 1;
|
||||
monthString = (index >= 0 && index < self.monthNames.count) ? self.monthNames[index] : @"";
|
||||
} else {
|
||||
if (![self.pickerStyle.language hasPrefix:@"zh"] && (self.pickerMode == BRDatePickerModeYMD || self.pickerMode == BRDatePickerModeYM || self.pickerMode == BRDatePickerModeYMW)) {
|
||||
if (![self.pickerStyle.language hasPrefix:@"zh"] && (self.pickerMode == BRDatePickerModeYMD || self.pickerMode == BRDatePickerModeYM)) {
|
||||
// 非中文环境:月份使用系统的月份名称
|
||||
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
|
||||
dateFormatter.locale = [[NSLocale alloc]initWithLocaleIdentifier:self.pickerStyle.language];
|
||||
@@ -625,32 +558,6 @@ BRSYNTH_DUMMY_CLASS(BRDatePickerView_BR)
|
||||
return [NSString stringWithFormat:@"%@%@", secondString, secondUnit];
|
||||
}
|
||||
|
||||
- (NSString *)getWeekText:(NSArray *)weekArr row:(NSInteger)row {
|
||||
NSInteger index = 0;
|
||||
if (row >= 0) {
|
||||
index = MIN(row, weekArr.count - 1);
|
||||
}
|
||||
NSString *weekString = [weekArr objectAtIndex:index];
|
||||
if ((self.lastRowContent && [weekString isEqualToString:self.lastRowContent]) || (self.firstRowContent && [weekString isEqualToString:self.firstRowContent])) {
|
||||
return weekString;
|
||||
}
|
||||
NSString *weekUnit = self.showUnitType == BRShowUnitTypeAll ? [self getWeekUnit] : @"";
|
||||
return [NSString stringWithFormat:@"%@%@", weekString, weekUnit];
|
||||
}
|
||||
|
||||
- (NSString *)getQuarterText:(NSArray *)quarterArr row:(NSInteger)row {
|
||||
NSInteger index = 0;
|
||||
if (row >= 0) {
|
||||
index = MIN(row, quarterArr.count - 1);
|
||||
}
|
||||
NSString *quarterString = [quarterArr objectAtIndex:index];
|
||||
if ((self.lastRowContent && [quarterString isEqualToString:self.lastRowContent]) || (self.firstRowContent && [quarterString isEqualToString:self.firstRowContent])) {
|
||||
return quarterString;
|
||||
}
|
||||
NSString *quarterUnit = self.showUnitType == BRShowUnitTypeAll ? [self getQuarterUnit] : @"";
|
||||
return [NSString stringWithFormat:@"%@%@", quarterString, quarterUnit];
|
||||
}
|
||||
|
||||
- (NSString *)getAMText {
|
||||
return [NSBundle br_localizedStringForKey:@"上午" language:self.pickerStyle.language];
|
||||
}
|
||||
@@ -722,26 +629,6 @@ BRSYNTH_DUMMY_CLASS(BRDatePickerView_BR)
|
||||
return [NSBundle br_localizedStringForKey:@"秒" language:self.pickerStyle.language];
|
||||
}
|
||||
|
||||
- (NSString *)getWeekUnit {
|
||||
if (self.customUnit) {
|
||||
return self.customUnit[@"week"] ? : @"";
|
||||
}
|
||||
if (![self.pickerStyle.language hasPrefix:@"zh"]) {
|
||||
return @"";
|
||||
}
|
||||
return [NSBundle br_localizedStringForKey:@"周" language:self.pickerStyle.language];
|
||||
}
|
||||
|
||||
- (NSString *)getQuarterUnit {
|
||||
if (self.customUnit) {
|
||||
return self.customUnit[@"quarter"] ? : @"";
|
||||
}
|
||||
if (![self.pickerStyle.language hasPrefix:@"zh"]) {
|
||||
return @"";
|
||||
}
|
||||
return [NSBundle br_localizedStringForKey:@"季度" language:self.pickerStyle.language];
|
||||
}
|
||||
|
||||
- (NSInteger)getIndexWithArray:(NSArray *)array object:(NSString *)obj {
|
||||
if (!array || array.count == 0 || !obj) {
|
||||
return 0;
|
||||
|
||||
@@ -24,7 +24,7 @@ typedef NS_ENUM(NSInteger, BRDatePickerMode) {
|
||||
/** 【HH:mm】UIDatePickerModeCountDownTimer */
|
||||
BRDatePickerModeCountDownTimer,
|
||||
|
||||
// ----- 以下14种是自定义样式 -----
|
||||
// ----- 以下11种是自定义样式 -----
|
||||
/** 【yyyy-MM-dd HH:mm:ss】年月日时分秒 */
|
||||
BRDatePickerModeYMDHMS,
|
||||
/** 【yyyy-MM-dd HH:mm】年月日时分 */
|
||||
@@ -46,14 +46,7 @@ typedef NS_ENUM(NSInteger, BRDatePickerMode) {
|
||||
/** 【HH:mm】时分 */
|
||||
BRDatePickerModeHM,
|
||||
/** 【mm:ss】分秒 */
|
||||
BRDatePickerModeMS,
|
||||
|
||||
/** 【yyyy-qq】年季度 */
|
||||
BRDatePickerModeYQ,
|
||||
/** 【yyyy-MM-ww】年月周 */
|
||||
BRDatePickerModeYMW,
|
||||
/** 【yyyy-ww】年周 */
|
||||
BRDatePickerModeYW
|
||||
BRDatePickerModeMS
|
||||
};
|
||||
|
||||
/// 日期单位显示的位置
|
||||
@@ -68,8 +61,6 @@ typedef NS_ENUM(NSInteger, BRShowUnitType) {
|
||||
|
||||
typedef void (^BRDateResultBlock)(NSDate * _Nullable selectDate, NSString * _Nullable selectValue);
|
||||
|
||||
typedef void (^BRDateResultRangeBlock)(NSDate * _Nullable selectStartDate, NSDate * _Nullable selectEndDate, NSString * _Nullable selectValue);
|
||||
|
||||
@interface BRDatePickerView : BRBaseView
|
||||
|
||||
/**
|
||||
@@ -94,13 +85,9 @@ typedef void (^BRDateResultRangeBlock)(NSDate * _Nullable selectStartDate, NSDat
|
||||
|
||||
/** 选择结果的回调 */
|
||||
@property (nullable, nonatomic, copy) BRDateResultBlock resultBlock;
|
||||
/** 选择结果范围的回调:for `BRDatePickerModeYQ`、`BRDatePickerModeYMW`、`BRDatePickerModeYW`, ignored otherwise. */
|
||||
@property (nullable, nonatomic, copy) BRDateResultRangeBlock resultRangeBlock;
|
||||
|
||||
/** 滚动选择时触发的回调 */
|
||||
@property (nullable, nonatomic, copy) BRDateResultBlock changeBlock;
|
||||
/** 滚动选择范围时触发的回调:for `BRDatePickerModeYQ`、`BRDatePickerModeYMW`、`BRDatePickerModeYW`, ignored otherwise. */
|
||||
@property (nullable, nonatomic, copy) BRDateResultRangeBlock changeRangeBlock;
|
||||
|
||||
/** 日期单位显示类型 */
|
||||
@property (nonatomic, assign) BRShowUnitType showUnitType;
|
||||
@@ -247,27 +234,6 @@ typedef void (^BRDateResultRangeBlock)(NSDate * _Nullable selectStartDate, NSDat
|
||||
isAutoSelect:(BOOL)isAutoSelect
|
||||
resultBlock:(nullable BRDateResultBlock)resultBlock;
|
||||
|
||||
/**
|
||||
* 3.显示日期选择器
|
||||
*
|
||||
* @param mode 日期显示类型
|
||||
* @param title 选择器标题
|
||||
* @param selectValue 默认选中的日期(默认选中当前日期)
|
||||
* @param minDate 最小日期(可使用 NSDate+BRPickerView 分类中对应的方法进行创建)
|
||||
* @param maxDate 最大日期(可使用 NSDate+BRPickerView 分类中对应的方法进行创建)
|
||||
* @param isAutoSelect 是否自动选择,即滚动选择器后就执行结果回调,默认为 NO
|
||||
* @param resultBlock 选择结果的回调
|
||||
* @param resultRangeBlock 范围选择结果的回调
|
||||
*
|
||||
*/
|
||||
+ (void)showDatePickerWithMode:(BRDatePickerMode)mode
|
||||
title:(nullable NSString *)title
|
||||
selectValue:(nullable NSString *)selectValue
|
||||
minDate:(nullable NSDate *)minDate
|
||||
maxDate:(nullable NSDate *)maxDate
|
||||
isAutoSelect:(BOOL)isAutoSelect
|
||||
resultBlock:(nullable BRDateResultBlock)resultBlock
|
||||
resultRangeBlock:(nullable BRDateResultRangeBlock)resultRangeBlock;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -36,11 +36,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
@property(nonatomic, copy) NSArray *minuteArr;
|
||||
@property(nonatomic, copy) NSArray *secondArr;
|
||||
|
||||
/// 月周、年周、季度数组
|
||||
@property(nonatomic, copy) NSArray *monthWeekArr;
|
||||
@property(nonatomic, copy) NSArray *yearWeekArr;
|
||||
@property(nonatomic, copy) NSArray *quarterArr;
|
||||
|
||||
/// 记录 年、月、日、时、分、秒 当前选择的位置
|
||||
@property(nonatomic, assign) NSInteger yearIndex;
|
||||
@property(nonatomic, assign) NSInteger monthIndex;
|
||||
@@ -49,11 +44,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
@property(nonatomic, assign) NSInteger minuteIndex;
|
||||
@property(nonatomic, assign) NSInteger secondIndex;
|
||||
|
||||
/// 月周、年周、季度 当前选择的位置
|
||||
@property(nonatomic, assign) NSInteger monthWeekIndex;
|
||||
@property(nonatomic, assign) NSInteger yearWeekIndex;
|
||||
@property(nonatomic, assign) NSInteger quarterIndex;
|
||||
|
||||
// 记录选择的值
|
||||
@property (nonatomic, strong) NSDate *mSelectDate;
|
||||
@property (nonatomic, copy) NSString *mSelectValue;
|
||||
@@ -96,18 +86,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
maxDate:(NSDate *)maxDate
|
||||
isAutoSelect:(BOOL)isAutoSelect
|
||||
resultBlock:(BRDateResultBlock)resultBlock {
|
||||
[self showDatePickerWithMode:mode title:title selectValue:selectValue minDate:nil maxDate:nil isAutoSelect:isAutoSelect resultBlock:resultBlock resultRangeBlock:nil];
|
||||
}
|
||||
|
||||
#pragma mark - 4.显示日期选择器
|
||||
+ (void)showDatePickerWithMode:(BRDatePickerMode)mode
|
||||
title:(NSString *)title
|
||||
selectValue:(NSString *)selectValue
|
||||
minDate:(NSDate *)minDate
|
||||
maxDate:(NSDate *)maxDate
|
||||
isAutoSelect:(BOOL)isAutoSelect
|
||||
resultBlock:(BRDateResultBlock)resultBlock
|
||||
resultRangeBlock:(BRDateResultRangeBlock)resultRangeBlock {
|
||||
// 创建日期选择器
|
||||
BRDatePickerView *datePickerView = [[BRDatePickerView alloc]init];
|
||||
datePickerView.pickerMode = mode;
|
||||
@@ -117,7 +95,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
datePickerView.maxDate = maxDate;
|
||||
datePickerView.isAutoSelect = isAutoSelect;
|
||||
datePickerView.resultBlock = resultBlock;
|
||||
datePickerView.resultRangeBlock = resultRangeBlock;
|
||||
// 显示
|
||||
[datePickerView show];
|
||||
}
|
||||
@@ -182,9 +159,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.hourArr = nil;
|
||||
self.minuteArr = nil;
|
||||
self.secondArr = nil;
|
||||
self.monthWeekArr = nil;
|
||||
self.yearWeekArr = nil;
|
||||
self.quarterArr = nil;
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeMDHM:
|
||||
@@ -196,9 +170,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.hourArr = nil;
|
||||
self.minuteArr = nil;
|
||||
self.secondArr = nil;
|
||||
self.monthWeekArr = nil;
|
||||
self.yearWeekArr = nil;
|
||||
self.quarterArr = nil;
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeHMS:
|
||||
@@ -210,9 +181,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.hourArr = [self getHourArr:self.mSelectDate.br_year month:self.mSelectDate.br_month day:self.mSelectDate.br_day];
|
||||
self.minuteArr = nil;
|
||||
self.secondArr = nil;
|
||||
self.monthWeekArr = nil;
|
||||
self.yearWeekArr = nil;
|
||||
self.quarterArr = nil;
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeMS:
|
||||
@@ -223,48 +191,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.hourArr = [self getHourArr:self.mSelectDate.br_year month:self.mSelectDate.br_month day:self.mSelectDate.br_day];
|
||||
self.minuteArr = [self getMinuteArr:self.mSelectDate.br_year month:self.mSelectDate.br_month day:self.mSelectDate.br_day hour:self.mSelectDate.br_hour];
|
||||
self.secondArr = nil;
|
||||
self.monthWeekArr = nil;
|
||||
self.yearWeekArr = nil;
|
||||
self.quarterArr = nil;
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYMW:
|
||||
{
|
||||
self.yearArr = [self getYearArr];
|
||||
self.monthArr = [self getMonthArr:self.mSelectDate.br_year];
|
||||
self.monthWeekArr = [self getMonthWeekArr:self.mSelectDate.br_year month:self.mSelectDate.br_month];
|
||||
self.yearWeekArr = nil;
|
||||
self.quarterArr = nil;
|
||||
self.dayArr = nil;
|
||||
self.hourArr = nil;
|
||||
self.minuteArr = nil;
|
||||
self.secondArr = nil;
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYW:
|
||||
{
|
||||
self.yearArr = [self getYearArr];
|
||||
self.monthArr = nil;
|
||||
self.monthWeekArr = nil;
|
||||
self.yearWeekArr = [self getYearWeekArr:self.mSelectDate.br_year];
|
||||
self.quarterArr = nil;
|
||||
self.dayArr = nil;
|
||||
self.hourArr = nil;
|
||||
self.minuteArr = nil;
|
||||
self.secondArr = nil;
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYQ:
|
||||
{
|
||||
self.yearArr = [self getYearArr];
|
||||
self.monthArr = nil;
|
||||
self.monthWeekArr = nil;
|
||||
self.yearWeekArr = nil;
|
||||
self.quarterArr = [self getQuarterArr:self.mSelectDate.br_year];;
|
||||
self.dayArr = nil;
|
||||
self.hourArr = nil;
|
||||
self.minuteArr = nil;
|
||||
self.secondArr = nil;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -278,10 +204,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.hourArr = [self getHourArr:self.mSelectDate.br_year month:self.mSelectDate.br_month day:self.mSelectDate.br_day];
|
||||
self.minuteArr = [self getMinuteArr:self.mSelectDate.br_year month:self.mSelectDate.br_month day:self.mSelectDate.br_day hour:self.mSelectDate.br_hour];
|
||||
self.secondArr = [self getSecondArr:self.mSelectDate.br_year month:self.mSelectDate.br_month day:self.mSelectDate.br_day hour:self.mSelectDate.br_hour minute:self.mSelectDate.br_minute];
|
||||
|
||||
self.monthWeekArr = [self getMonthWeekArr:self.mSelectDate.br_year month:self.mSelectDate.br_month];
|
||||
self.yearWeekArr = [self getYearWeekArr:self.mSelectDate.br_year];
|
||||
self.quarterArr = [self getQuarterArr:self.mSelectDate.br_year];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -393,27 +315,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.unitArr = @[[self getMinuteUnit], [self getSecondUnit]];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYMW:
|
||||
{
|
||||
self.dateFormatter = @"yyyy-MM-WW";
|
||||
self.style = BRDatePickerStyleCustom;
|
||||
self.unitArr = @[[self getYearUnit], [self getMonthUnit], [self getWeekUnit]];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYW:
|
||||
{
|
||||
self.dateFormatter = @"yyyy-ww";
|
||||
self.style = BRDatePickerStyleCustom;
|
||||
self.unitArr = @[[self getYearUnit], [self getWeekUnit]];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYQ:
|
||||
{
|
||||
self.dateFormatter = @"yyyy-qq";
|
||||
self.style = BRDatePickerStyleCustom;
|
||||
self.unitArr = @[[self getYearUnit], [self getQuarterUnit]];
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
@@ -422,11 +323,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
|
||||
#pragma mark - 更新日期数据源数组
|
||||
- (void)reloadDateArrayWithUpdateMonth:(BOOL)updateMonth updateDay:(BOOL)updateDay updateHour:(BOOL)updateHour updateMinute:(BOOL)updateMinute updateSecond:(BOOL)updateSecond {
|
||||
[self reloadDateArrayWithUpdateMonth:updateMonth updateDay:updateDay updateHour:updateHour updateMinute:updateMinute updateSecond:NO updateWeekOfMonth:NO updateWeekOfYear:NO updateQuarter:NO];
|
||||
}
|
||||
|
||||
- (void)reloadDateArrayWithUpdateMonth:(BOOL)updateMonth updateDay:(BOOL)updateDay updateHour:(BOOL)updateHour updateMinute:(BOOL)updateMinute updateSecond:(BOOL)updateSecond
|
||||
updateWeekOfMonth:(BOOL)updateWeekOfMonth updateWeekOfYear:(BOOL)updateWeekOfYear updateQuarter:(BOOL)updateQuarter {
|
||||
_isAdjustSelectRow = NO;
|
||||
// 1.更新 monthArr
|
||||
if (self.yearArr.count == 0) {
|
||||
@@ -439,9 +335,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.hourArr = nil;
|
||||
self.minuteArr = nil;
|
||||
self.secondArr = nil;
|
||||
self.monthWeekArr = nil;
|
||||
self.yearWeekArr = nil;
|
||||
self.quarterArr = nil;
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -462,42 +355,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
}
|
||||
}
|
||||
|
||||
// 1/1.更新 yearWeekArr
|
||||
if (updateWeekOfYear) {
|
||||
NSString *lastSelectWeekOfYear = [self getMDHMSNumber:self.mSelectDate.br_yearWeek];
|
||||
self.yearWeekArr = [self getYearWeekArr:[yearString integerValue]];
|
||||
if (self.mSelectDate) {
|
||||
if ([self.yearWeekArr containsObject:lastSelectWeekOfYear]) {
|
||||
NSInteger yearWeekIndex = [self.yearWeekArr indexOfObject:lastSelectWeekOfYear];
|
||||
if (yearWeekIndex != self.yearWeekIndex) {
|
||||
_isAdjustSelectRow = YES;
|
||||
self.monthIndex = yearWeekIndex;
|
||||
}
|
||||
} else {
|
||||
_isAdjustSelectRow = YES;
|
||||
self.yearWeekIndex = ([lastSelectWeekOfYear intValue] < [self.yearWeekArr.firstObject intValue]) ? 0 : (self.yearWeekArr.count - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 1/1.更新 quarterArr
|
||||
if (updateQuarter) {
|
||||
NSString *lastSelectQuarter = [self getMDHMSNumber:self.mSelectDate.br_quarter];
|
||||
self.quarterArr = [self getQuarterArr:[yearString integerValue]];
|
||||
if (self.mSelectDate) {
|
||||
if ([self.quarterArr containsObject:lastSelectQuarter]) {
|
||||
NSInteger quarterIndex = [self.quarterArr indexOfObject:lastSelectQuarter];
|
||||
if (quarterIndex != self.quarterIndex) {
|
||||
_isAdjustSelectRow = YES;
|
||||
self.quarterIndex = quarterIndex;
|
||||
}
|
||||
} else {
|
||||
_isAdjustSelectRow = YES;
|
||||
self.quarterIndex = ([lastSelectQuarter intValue] < [self.quarterArr.firstObject intValue]) ? 0 : (self.quarterArr.count - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2.更新 dayArr
|
||||
if (self.monthArr.count == 0) {
|
||||
return;
|
||||
@@ -508,7 +365,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.hourArr = nil;
|
||||
self.minuteArr = nil;
|
||||
self.secondArr = nil;
|
||||
self.monthWeekArr = nil;
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -529,24 +385,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
}
|
||||
}
|
||||
|
||||
// 2/1.更新 monthWeekArr
|
||||
if (updateWeekOfMonth) {
|
||||
NSString *lastWeekOfMonth = [self getMDHMSNumber:self.mSelectDate.br_monthWeek];
|
||||
self.monthWeekArr = [self getMonthWeekArr:[yearString integerValue] month:[monthString integerValue]];
|
||||
if (self.mSelectDate) {
|
||||
if ([self.monthWeekArr containsObject:lastWeekOfMonth]) {
|
||||
NSInteger monthWeekIndex = [self.monthWeekArr indexOfObject:lastWeekOfMonth];
|
||||
if (monthWeekIndex != self.monthWeekIndex) {
|
||||
_isAdjustSelectRow = YES;
|
||||
self.monthWeekIndex = monthWeekIndex;
|
||||
}
|
||||
} else {
|
||||
_isAdjustSelectRow = YES;
|
||||
self.monthWeekIndex = ([lastWeekOfMonth intValue] < [self.monthWeekArr.firstObject intValue]) ? 0 : (self.monthWeekArr.count - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3.更新 hourArr
|
||||
if (self.dayArr.count == 0) {
|
||||
return;
|
||||
@@ -668,12 +506,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
indexArr = @[@(self.hourIndex), @(self.minuteIndex)];
|
||||
} else if (self.pickerMode == BRDatePickerModeMS) {
|
||||
indexArr = @[@(self.minuteIndex), @(self.secondIndex)];
|
||||
} else if (self.pickerMode == BRDatePickerModeYMW) {
|
||||
indexArr = @[@(self.yearIndex), @(self.monthIndex), @(self.monthWeekIndex)];
|
||||
} else if (self.pickerMode == BRDatePickerModeYW) {
|
||||
indexArr = @[@(self.yearIndex), @(self.yearWeekIndex)];
|
||||
} else if (self.pickerMode == BRDatePickerModeYQ) {
|
||||
indexArr = @[@(self.yearIndex), @(self.quarterIndex)];
|
||||
}
|
||||
if (!indexArr) return;
|
||||
for (NSInteger i = 0; i < indexArr.count; i++) {
|
||||
@@ -690,15 +522,12 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
case BRDatePickerModeYMD:
|
||||
case BRDatePickerModeYM:
|
||||
case BRDatePickerModeY:
|
||||
case BRDatePickerModeYMW:
|
||||
case BRDatePickerModeYW:
|
||||
case BRDatePickerModeYQ:
|
||||
{
|
||||
NSInteger yearIndex = ([self.selectValue isEqualToString:self.lastRowContent] && self.yearArr.count > 0) ? self.yearArr.count - 1 : 0;
|
||||
NSInteger component = 0;
|
||||
if ((self.pickerMode == BRDatePickerModeYMD || self.pickerMode == BRDatePickerModeYMW) && ![self.pickerStyle.language hasPrefix:@"zh"]) {
|
||||
if (self.pickerMode == BRDatePickerModeYMD && ![self.pickerStyle.language hasPrefix:@"zh"]) {
|
||||
component = 2;
|
||||
} else if ((self.pickerMode == BRDatePickerModeYM || self.pickerMode == BRDatePickerModeYQ) && ![self.pickerStyle.language hasPrefix:@"zh"]) {
|
||||
} else if (self.pickerMode == BRDatePickerModeYM && ![self.pickerStyle.language hasPrefix:@"zh"]) {
|
||||
component = 1;
|
||||
}
|
||||
[self.pickerView selectRow:yearIndex inComponent:component animated:animated];
|
||||
@@ -781,12 +610,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
return 2;
|
||||
} else if (self.pickerMode == BRDatePickerModeMS) {
|
||||
return 2;
|
||||
} else if (self.pickerMode == BRDatePickerModeYMW) {
|
||||
return 3;
|
||||
} else if (self.pickerMode == BRDatePickerModeYW) {
|
||||
return 2;
|
||||
} else if (self.pickerMode == BRDatePickerModeYQ) {
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -824,12 +647,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
rowsArr = @[@(self.hourArr.count), @(self.minuteArr.count)];
|
||||
} else if (self.pickerMode == BRDatePickerModeMS) {
|
||||
rowsArr = @[@(self.minuteArr.count), @(self.secondArr.count)];
|
||||
} else if (self.pickerMode == BRDatePickerModeYMW) {
|
||||
rowsArr = @[@(self.yearArr.count), @(self.monthArr.count), @(self.monthWeekArr.count)];
|
||||
} else if (self.pickerMode == BRDatePickerModeYW) {
|
||||
rowsArr = @[@(self.yearArr.count), @(self.yearWeekArr.count)];
|
||||
} else if (self.pickerMode == BRDatePickerModeYQ) {
|
||||
rowsArr = @[@(self.yearArr.count), @(self.quarterArr.count)];
|
||||
}
|
||||
if (component >= 0 && component < rowsArr.count) {
|
||||
return [rowsArr[component] integerValue];
|
||||
@@ -953,26 +770,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
} else if (component == 1) {
|
||||
titleString = [self getSecondText:self.secondArr row:row];
|
||||
}
|
||||
} else if (self.pickerMode == BRDatePickerModeYMW) {
|
||||
if (component == 0) {
|
||||
titleString = [self getYearText:self.yearArr row:row];
|
||||
} else if (component == 1) {
|
||||
titleString = [self getMonthText:self.monthArr row:row];
|
||||
} else if (component == 2) {
|
||||
titleString = [self getWeekText:self.monthWeekArr row:row];
|
||||
}
|
||||
} else if (self.pickerMode == BRDatePickerModeYW) {
|
||||
if (component == 0) {
|
||||
titleString = [self getYearText:self.yearArr row:row];
|
||||
} else if (component == 1) {
|
||||
titleString = [self getWeekText:self.yearWeekArr row:row];
|
||||
}
|
||||
} else if (self.pickerMode == BRDatePickerModeYQ) {
|
||||
if (component == 0) {
|
||||
titleString = [self getYearText:self.yearArr row:row];
|
||||
} else if (component == 1) {
|
||||
titleString = [self getQuarterText:self.quarterArr row:row];
|
||||
}
|
||||
}
|
||||
|
||||
return titleString;
|
||||
@@ -1371,84 +1168,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.mSelectValue = self.firstRowContent;
|
||||
}
|
||||
}
|
||||
} else if (self.pickerMode == BRDatePickerModeYMW) {
|
||||
if (component == 0) {
|
||||
self.yearIndex = row;
|
||||
[self reloadDateArrayWithUpdateMonth:YES updateDay:NO updateHour:NO updateMinute:NO updateSecond:NO updateWeekOfMonth:YES updateWeekOfYear:NO updateQuarter:NO];
|
||||
[self.pickerView reloadComponent:1];
|
||||
[self.pickerView reloadComponent:2];
|
||||
} else if (component == 1) {
|
||||
self.monthIndex = row;
|
||||
[self reloadDateArrayWithUpdateMonth:NO updateDay:NO updateHour:NO updateMinute:NO updateSecond:NO updateWeekOfMonth:YES updateWeekOfYear:NO updateQuarter:NO];
|
||||
[self.pickerView reloadComponent:2];
|
||||
} else if (component == 2) {
|
||||
self.monthWeekIndex = row;
|
||||
}
|
||||
|
||||
NSString *yearString = [self getYearString];
|
||||
if (![yearString isEqualToString:self.lastRowContent] && ![yearString isEqualToString:self.firstRowContent]) {
|
||||
if (self.yearArr.count * self.monthArr.count * self.monthWeekArr.count == 0) return;
|
||||
int year = [[self getYearString] intValue];
|
||||
int month = [[self getMonthString] intValue];
|
||||
int week = [[self getMonthWeekString] intValue];
|
||||
self.mSelectDate = [NSDate br_setYear:year month:month weekOfMonth:week];
|
||||
self.mSelectValue = [NSString stringWithFormat:@"%04d-%02d-%02d", year, month, week];
|
||||
} else {
|
||||
self.mSelectDate = self.addToNow ? [NSDate date] : nil;
|
||||
if ([yearString isEqualToString:self.lastRowContent]) {
|
||||
self.mSelectValue = self.lastRowContent;
|
||||
} else if ([yearString isEqualToString:self.firstRowContent]) {
|
||||
self.mSelectValue = self.firstRowContent;
|
||||
}
|
||||
}
|
||||
} else if (self.pickerMode == BRDatePickerModeYW) {
|
||||
if (component == 0) {
|
||||
self.yearIndex = row;
|
||||
[self reloadDateArrayWithUpdateMonth:NO updateDay:NO updateHour:NO updateMinute:NO updateSecond:NO updateWeekOfMonth:NO updateWeekOfYear:YES updateQuarter:NO];
|
||||
[self.pickerView reloadComponent:1];
|
||||
} else if (component == 1) {
|
||||
self.yearWeekIndex = row;
|
||||
}
|
||||
|
||||
NSString *yearString = [self getYearString];
|
||||
if (![yearString isEqualToString:self.lastRowContent] && ![yearString isEqualToString:self.firstRowContent]) {
|
||||
if (self.yearArr.count * self.monthArr.count * self.monthWeekArr.count == 0) return;
|
||||
int year = [[self getYearString] intValue];
|
||||
int week = [[self getYearWeekString] intValue];
|
||||
self.mSelectDate = [NSDate br_setYear:year weekOfYear:week];
|
||||
self.mSelectValue = [NSString stringWithFormat:@"%04d-%02d", year, week];
|
||||
} else {
|
||||
self.mSelectDate = self.addToNow ? [NSDate date] : nil;
|
||||
if ([yearString isEqualToString:self.lastRowContent]) {
|
||||
self.mSelectValue = self.lastRowContent;
|
||||
} else if ([yearString isEqualToString:self.firstRowContent]) {
|
||||
self.mSelectValue = self.firstRowContent;
|
||||
}
|
||||
}
|
||||
} else if (self.pickerMode == BRDatePickerModeYQ) {
|
||||
if (component == 0) {
|
||||
self.yearIndex = row;
|
||||
[self reloadDateArrayWithUpdateMonth:NO updateDay:NO updateHour:NO updateMinute:NO updateSecond:NO updateWeekOfMonth:NO updateWeekOfYear:NO updateQuarter:YES];
|
||||
[self.pickerView reloadComponent:1];
|
||||
} else if (component == 1) {
|
||||
self.quarterIndex = row;
|
||||
}
|
||||
|
||||
NSString *yearString = [self getYearString];
|
||||
if (![yearString isEqualToString:self.lastRowContent] && ![yearString isEqualToString:self.firstRowContent]) {
|
||||
if (self.yearArr.count * self.monthArr.count * self.monthWeekArr.count == 0) return;
|
||||
int year = [[self getYearString] intValue];
|
||||
int quarter = [[self getQuarterString] intValue];
|
||||
self.mSelectDate = [NSDate br_setYear:year quarter:quarter];
|
||||
self.mSelectValue = [NSString stringWithFormat:@"%04d-%02d", year, quarter];
|
||||
} else {
|
||||
self.mSelectDate = self.addToNow ? [NSDate date] : nil;
|
||||
if ([yearString isEqualToString:self.lastRowContent]) {
|
||||
self.mSelectValue = self.lastRowContent;
|
||||
} else if ([yearString isEqualToString:self.firstRowContent]) {
|
||||
self.mSelectValue = self.firstRowContent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 纠正选择日期(解决:由【自定义字符串】滚动到 其它日期时,或设置 minDate,日期联动不正确问题)
|
||||
@@ -1482,20 +1201,12 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.changeBlock(self.mSelectDate, self.mSelectValue);
|
||||
}
|
||||
|
||||
// 滚动选择范围时执行 changeBlock 回调
|
||||
if (self.changeRangeBlock) {
|
||||
self.changeRangeBlock(self.getSelectRangeDate.firstObject, self.getSelectRangeDate.lastObject, self.mSelectValue);
|
||||
}
|
||||
|
||||
// 设置自动选择时,滚动选择时就执行 resultBlock
|
||||
if (self.isAutoSelect) {
|
||||
// 滚动完成后,执行block回调
|
||||
if (self.resultBlock) {
|
||||
self.resultBlock(self.mSelectDate, self.mSelectValue);
|
||||
}
|
||||
if (self.resultRangeBlock) {
|
||||
self.resultRangeBlock(self.getSelectRangeDate.firstObject, self.getSelectRangeDate.lastObject, self.mSelectValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1529,20 +1240,12 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
self.changeBlock(self.mSelectDate, self.mSelectValue);
|
||||
}
|
||||
|
||||
// 滚动选择范围时执行 changeBlock 回调
|
||||
if (self.changeRangeBlock) {
|
||||
self.changeRangeBlock(self.getSelectRangeDate.firstObject, self.getSelectRangeDate.lastObject, self.mSelectValue);
|
||||
}
|
||||
|
||||
// 设置自动选择时,滚动选择时就执行 resultBlock
|
||||
if (self.isAutoSelect) {
|
||||
// 滚动完成后,执行block回调
|
||||
if (self.resultBlock) {
|
||||
self.resultBlock(self.mSelectDate, self.mSelectValue);
|
||||
}
|
||||
if (self.resultRangeBlock) {
|
||||
self.resultRangeBlock(self.getSelectRangeDate.firstObject, self.getSelectRangeDate.lastObject, self.mSelectValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1631,9 +1334,6 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
if (weakSelf.resultBlock) {
|
||||
weakSelf.resultBlock(weakSelf.mSelectDate, weakSelf.mSelectValue);
|
||||
}
|
||||
if (weakSelf.resultRangeBlock) {
|
||||
weakSelf.resultRangeBlock(weakSelf.getSelectRangeDate.firstObject, weakSelf.getSelectRangeDate.lastObject, weakSelf.mSelectValue);
|
||||
}
|
||||
};
|
||||
|
||||
[super addPickerToView:view];
|
||||
@@ -1858,108 +1558,4 @@ typedef NS_ENUM(NSInteger, BRDatePickerStyle) {
|
||||
return [self.secondArr objectAtIndex:index];
|
||||
}
|
||||
|
||||
- (NSString *)getMonthWeekString {
|
||||
NSInteger index = 0;
|
||||
if (self.monthWeekIndex >= 0 && self.monthWeekIndex < self.monthWeekArr.count) {
|
||||
index = self.monthWeekIndex;
|
||||
}
|
||||
return [self.monthWeekArr objectAtIndex:index];
|
||||
}
|
||||
|
||||
- (NSString *)getYearWeekString {
|
||||
NSInteger index = 0;
|
||||
if (self.yearWeekIndex >= 0 && self.yearWeekIndex < self.yearWeekArr.count) {
|
||||
index = self.yearWeekIndex;
|
||||
}
|
||||
return [self.yearWeekArr objectAtIndex:index];
|
||||
}
|
||||
|
||||
- (NSString *)getQuarterString {
|
||||
NSInteger index = 0;
|
||||
if (self.quarterIndex >= 0 && self.quarterIndex < self.quarterArr.count) {
|
||||
index = self.quarterIndex;
|
||||
}
|
||||
return [self.quarterArr objectAtIndex:index];
|
||||
}
|
||||
|
||||
#pragma mark - 获取选中日期范围
|
||||
- (NSArray<NSDate *> *)getSelectRangeDate {
|
||||
NSDate *startDate, *endDate = nil;
|
||||
switch (self.pickerMode) {
|
||||
case BRDatePickerModeYMDHMS:
|
||||
case BRDatePickerModeMS:
|
||||
case BRDatePickerModeHMS:
|
||||
{
|
||||
endDate = self.mSelectDate;
|
||||
startDate = self.mSelectDate;
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYMDHM:
|
||||
case BRDatePickerModeMDHM:
|
||||
case BRDatePickerModeHM:
|
||||
case BRDatePickerModeDateAndTime:
|
||||
case BRDatePickerModeTime:
|
||||
{
|
||||
NSDate *tempDate = [self br_dateFromString:self.mSelectValue dateFormat:self.dateFormatter];
|
||||
startDate = tempDate;
|
||||
endDate = [tempDate dateByAddingTimeInterval:59];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYMDH:
|
||||
{
|
||||
NSDate *tempDate = [self br_dateFromString:self.mSelectValue dateFormat:self.dateFormatter];
|
||||
startDate = tempDate;
|
||||
endDate = [tempDate dateByAddingTimeInterval:60 * 59 + 59];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeMD:
|
||||
case BRDatePickerModeYMD:
|
||||
case BRDatePickerModeDate:
|
||||
{
|
||||
NSDate *tempDate = [self br_dateFromString:self.mSelectValue dateFormat:self.dateFormatter];
|
||||
startDate = tempDate;
|
||||
endDate = [[tempDate br_getNewDateToDays:1] dateByAddingTimeInterval:-1];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYM:
|
||||
{
|
||||
NSDate *tempDate = [self br_dateFromString:self.mSelectValue dateFormat:self.dateFormatter];
|
||||
startDate = tempDate;
|
||||
endDate = [[tempDate br_getNewDateToMonths:1] dateByAddingTimeInterval:-1];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeY:
|
||||
{
|
||||
NSDate *tempDate = [self br_dateFromString:self.mSelectValue dateFormat:self.dateFormatter];
|
||||
startDate = tempDate;
|
||||
endDate = [[tempDate br_getNewDateToMonths:12] dateByAddingTimeInterval:-1];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYMW:
|
||||
case BRDatePickerModeYW:
|
||||
{
|
||||
NSDate *tempDate = [self br_dateFromString:self.mSelectValue dateFormat:self.dateFormatter];
|
||||
endDate = [tempDate dateByAddingTimeInterval:-1];
|
||||
startDate = [tempDate br_getNewDateToDays:-7];
|
||||
}
|
||||
break;
|
||||
case BRDatePickerModeYQ:
|
||||
{
|
||||
startDate = [self br_dateFromString:self.mSelectValue dateFormat:self.dateFormatter];
|
||||
endDate = [[startDate br_getNewDateToMonths:3] dateByAddingTimeInterval:-1];
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
NSMutableArray *dataArr = [NSMutableArray array];
|
||||
if (startDate)
|
||||
[dataArr addObject:startDate];
|
||||
if (endDate)
|
||||
[dataArr addObject:endDate];
|
||||
return dataArr;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -13,16 +13,13 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSDate (BRPickerView)
|
||||
/// 获取指定date的详细信息
|
||||
@property (readonly) NSInteger br_year; // 年
|
||||
@property (readonly) NSInteger br_month; // 月
|
||||
@property (readonly) NSInteger br_day; // 日
|
||||
@property (readonly) NSInteger br_hour; // 时
|
||||
@property (readonly) NSInteger br_minute; // 分
|
||||
@property (readonly) NSInteger br_second; // 秒
|
||||
@property (readonly) NSInteger br_weekday; // 星期
|
||||
@property (readonly) NSInteger br_monthWeek; // 月周
|
||||
@property (readonly) NSInteger br_yearWeek; // 年周
|
||||
@property (readonly) NSInteger br_quarter; // 季度
|
||||
@property (readonly) NSInteger br_year; // 年
|
||||
@property (readonly) NSInteger br_month; // 月
|
||||
@property (readonly) NSInteger br_day; // 日
|
||||
@property (readonly) NSInteger br_hour; // 时
|
||||
@property (readonly) NSInteger br_minute; // 分
|
||||
@property (readonly) NSInteger br_second; // 秒
|
||||
@property (readonly) NSInteger br_weekday; // 星期
|
||||
|
||||
/** 获取中文星期字符串 */
|
||||
@property (nullable, nonatomic, readonly, copy) NSString *br_weekdayString;
|
||||
@@ -68,33 +65,13 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/** mm:ss */
|
||||
+ (nullable NSDate *)br_setMinute:(NSInteger)minute second:(NSInteger)second;
|
||||
|
||||
/** yyyy-MM-ww */
|
||||
+ (nullable NSDate *)br_setYear:(NSInteger)year month:(NSInteger)month weekOfMonth:(NSInteger)weekOfMont;
|
||||
|
||||
/** yyyy-ww */
|
||||
+ (nullable NSDate *)br_setYear:(NSInteger)year weekOfYear:(NSInteger)weekOfYear;
|
||||
|
||||
/** yyyy-qq */
|
||||
+ (nullable NSDate *)br_setYear:(NSInteger)year quarter:(NSInteger)quarter;
|
||||
|
||||
|
||||
/** 获取某个月的天数(通过年月求每月天数)*/
|
||||
+ (NSUInteger)br_getDaysInYear:(NSInteger)year month:(NSInteger)month;
|
||||
|
||||
/** 获取某个月的周数(通过年月求该月周数)*/
|
||||
+ (NSUInteger)br_getWeeksOfMonthInYear:(NSInteger)year month:(NSInteger)month;
|
||||
|
||||
/** 获取某一年的周数(通过年求该年周数)*/
|
||||
+ (NSUInteger)br_getWeeksOfYearInYear:(NSInteger)year;
|
||||
|
||||
/** 获取某一年的季度数(通过年求该年季度数)*/
|
||||
+ (NSUInteger)br_getQuartersInYear:(NSInteger)year;
|
||||
|
||||
/** 获取 日期加上/减去某天数后的新日期 */
|
||||
- (nullable NSDate *)br_getNewDateToDays:(NSTimeInterval)days;
|
||||
|
||||
/** 获取 日期加上/减去某个月数后的新日期 */
|
||||
- (nullable NSDate *)br_getNewDateToMonths:(NSTimeInterval)months;
|
||||
|
||||
/** NSDate 转 NSString */
|
||||
+ (nullable NSString *)br_stringFromDate:(NSDate *)date dateFormat:(NSString *)dateFormat;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
BRSYNTH_DUMMY_CLASS(NSDate_BRPickerView)
|
||||
|
||||
static const NSCalendarUnit unitFlags = (NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekOfYear | NSCalendarUnitWeekOfMonth | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal | NSCalendarUnitQuarter);
|
||||
static const NSCalendarUnit unitFlags = (NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekOfMonth | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal);
|
||||
|
||||
@implementation NSDate (BRPickerView)
|
||||
|
||||
@@ -78,28 +78,6 @@ static const NSCalendarUnit unitFlags = (NSCalendarUnitYear | NSCalendarUnitMont
|
||||
return [NSDate br_componentsFromDate:self].weekday;
|
||||
}
|
||||
|
||||
#pragma mark - 获取指定日期的月周
|
||||
- (NSInteger)br_monthWeek {
|
||||
return [NSDate br_componentsFromDate:self].weekOfMonth;
|
||||
}
|
||||
|
||||
#pragma mark - 获取指定日期的年周
|
||||
- (NSInteger)br_yearWeek {
|
||||
return [NSDate br_componentsFromDate:self].weekOfYear;
|
||||
}
|
||||
|
||||
#pragma mark - 获取指定日期的季度
|
||||
- (NSInteger)br_quarter {
|
||||
// [NSDate br_componentsFromDate:self].quarter; // 取到的季度值总是0?
|
||||
NSInteger quarter = 1;
|
||||
NSInteger month = self.br_month;
|
||||
if (month > 3) quarter = 2;
|
||||
if (month > 6) quarter = 3;
|
||||
if (month > 9) quarter = 4;
|
||||
|
||||
return quarter;
|
||||
}
|
||||
|
||||
#pragma mark - 获取指定日期的星期
|
||||
- (NSString *)br_weekdayString {
|
||||
switch (self.br_weekday - 1) {
|
||||
@@ -160,12 +138,6 @@ static const NSCalendarUnit unitFlags = (NSCalendarUnitYear | NSCalendarUnitMont
|
||||
|
||||
#pragma mark - 创建date(通过 NSCalendar 类来创建日期)
|
||||
+ (NSDate *)br_setYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day hour:(NSInteger)hour minute:(NSInteger)minute second:(NSInteger)second {
|
||||
return [self br_setYear:year month:month day:day hour:hour minute:minute second:second weekOfMonth:0 weekOfYear:0 quarter:0];
|
||||
}
|
||||
|
||||
+ (NSDate *)br_setYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day
|
||||
hour:(NSInteger)hour minute:(NSInteger)minute second:(NSInteger)second
|
||||
weekOfMonth:(NSInteger)weekOfMonth weekOfYear:(NSInteger)weekOfYear quarter:(NSInteger)quarter {
|
||||
NSDateComponents *components = [self br_componentsFromDate:[NSDate date]];
|
||||
if (year > 0) {
|
||||
// 初始化日期组件
|
||||
@@ -187,15 +159,6 @@ static const NSCalendarUnit unitFlags = (NSCalendarUnitYear | NSCalendarUnitMont
|
||||
if (second >= 0) {
|
||||
components.second = second;
|
||||
}
|
||||
if (weekOfMonth > 0) {
|
||||
components.weekOfMonth = weekOfMonth;
|
||||
}
|
||||
if (weekOfYear > 0) {
|
||||
components.weekOfYear = weekOfYear;
|
||||
}
|
||||
if (quarter > 0) {
|
||||
components.quarter = quarter;
|
||||
}
|
||||
|
||||
return [self br_dateFromComponents:components];
|
||||
}
|
||||
@@ -240,18 +203,6 @@ static const NSCalendarUnit unitFlags = (NSCalendarUnitYear | NSCalendarUnitMont
|
||||
return [self br_setYear:0 month:0 day:0 hour:0 minute:minute second:second];
|
||||
}
|
||||
|
||||
+ (NSDate *)br_setYear:(NSInteger)year month:(NSInteger)month weekOfMonth:(NSInteger)weekOfMonth {
|
||||
return [self br_setYear:year month:month day:0 hour:0 minute:0 second:0 weekOfMonth:weekOfMonth weekOfYear:0 quarter:0];
|
||||
}
|
||||
|
||||
+ (NSDate *)br_setYear:(NSInteger)year weekOfYear:(NSInteger)weekOfYear {
|
||||
return [self br_setYear:year month:0 day:0 hour:0 minute:0 second:0 weekOfMonth:0 weekOfYear:weekOfYear quarter:0];
|
||||
}
|
||||
|
||||
+ (NSDate *)br_setYear:(NSInteger)year quarter:(NSInteger)quarter {
|
||||
return [self br_setYear:year month:0 day:0 hour:0 minute:0 second:0 weekOfMonth:0 weekOfYear:0 quarter:quarter];
|
||||
}
|
||||
|
||||
#pragma mark - 获取某个月的天数(通过年月求每月天数)
|
||||
+ (NSUInteger)br_getDaysInYear:(NSInteger)year month:(NSInteger)month {
|
||||
BOOL isLeapYear = year % 4 == 0 ? (year % 100 == 0 ? (year % 400 == 0 ? YES : NO) : YES) : NO;
|
||||
@@ -288,42 +239,12 @@ static const NSCalendarUnit unitFlags = (NSCalendarUnitYear | NSCalendarUnitMont
|
||||
return 0;
|
||||
}
|
||||
|
||||
#pragma mark - 获取某个月的周数(通过年月求该月周数)
|
||||
+ (NSUInteger)br_getWeeksOfMonthInYear:(NSInteger)year month:(NSInteger)month {
|
||||
NSUInteger lastDayOfMonth = [self br_getDaysInYear:year month:month];
|
||||
NSDate *endDate = [self br_setYear:year month:month day:lastDayOfMonth];
|
||||
return endDate.br_monthWeek;
|
||||
}
|
||||
|
||||
#pragma mark - 获取某一年的周数(通过年求该年周数)
|
||||
+ (NSUInteger)br_getWeeksOfYearInYear:(NSInteger)year {
|
||||
NSDate *endDate = [self br_setYear:year month:12 day:31];
|
||||
NSInteger weeks = endDate.br_yearWeek;
|
||||
if (weeks == 1) weeks = 52;
|
||||
return weeks;
|
||||
}
|
||||
|
||||
#pragma mark - 获取某一年的季度数(通过年求该年季度数)
|
||||
+ (NSUInteger)br_getQuartersInYear:(NSInteger)year {
|
||||
NSDate *endDate = [self br_setYear:year month:12 day:31];
|
||||
return endDate.br_quarter;
|
||||
}
|
||||
|
||||
#pragma mark - 获取 日期加上/减去某天数后的新日期
|
||||
- (NSDate *)br_getNewDateToDays:(NSTimeInterval)days {
|
||||
// days 为正数时,表示几天之后的日期;负数表示几天之前的日期
|
||||
return [self dateByAddingTimeInterval:60 * 60 * 24 * days];
|
||||
}
|
||||
|
||||
#pragma mark - 获取 日期加上/减去某个月数后的新日期
|
||||
- (nullable NSDate *)br_getNewDateToMonths:(NSTimeInterval)months {
|
||||
// months 为正数时,表示几个月之后的日期;负数表示几个月之前的日期
|
||||
NSDateComponents *components = [[NSDateComponents alloc] init];
|
||||
[components setMonth:months];
|
||||
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
|
||||
return [calender dateByAddingComponents:components toDate:self options:0];
|
||||
}
|
||||
|
||||
#pragma mark - NSDate 转 NSString
|
||||
+ (NSString *)br_stringFromDate:(NSDate *)date dateFormat:(NSString *)dateFormat {
|
||||
return [self br_stringFromDate:date dateFormat:dateFormat timeZone:nil language:nil];
|
||||
|
||||
@@ -13,24 +13,21 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface BRResultModel : NSObject
|
||||
|
||||
/** 索引 */
|
||||
@property (nonatomic, assign) NSInteger index;
|
||||
/** key */
|
||||
@property (nullable, nonatomic, copy) NSString *key;
|
||||
/** value */
|
||||
@property (nullable, nonatomic, copy) NSString *value;
|
||||
|
||||
/** 父级key(提示:联动时第一级数据,parentKey设置为:@"-1") */
|
||||
@property (nullable, nonatomic, copy) NSString *parentKey;
|
||||
/** 父级value */
|
||||
@property (nullable, nonatomic, copy) NSString *parentValue;
|
||||
/** 级别 */
|
||||
@property (nullable, nonatomic, copy) NSString *level;
|
||||
/** 子级list */
|
||||
@property (nullable, nonatomic, copy) NSArray<BRResultModel *> *children;
|
||||
/** 记录选择的索引位置 */
|
||||
@property (nonatomic, assign) NSInteger index;
|
||||
|
||||
/// 其它扩展字段
|
||||
@property (nullable, nonatomic, strong) id extras;
|
||||
@property (nullable, nonatomic, copy) NSString *remark;
|
||||
@property (nullable, nonatomic, strong) id extras;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -476,10 +476,6 @@
|
||||
self.pickerView.frame = CGRectMake(0, pickerHeaderViewHeight, view.bounds.size.width, view.bounds.size.height - pickerHeaderViewHeight - pickerFooterViewHeight);
|
||||
[self addSubview:self.pickerView];
|
||||
} else {
|
||||
// iOS16:重新设置 pickerView 高度(解决懒加载设置frame不生效问题)
|
||||
CGFloat pickerHeaderViewHeight = self.pickerHeaderView ? self.pickerHeaderView.bounds.size.height : 0;
|
||||
self.pickerView.frame = CGRectMake(0, self.pickerStyle.titleBarHeight + pickerHeaderViewHeight, self.keyView.bounds.size.width, self.pickerStyle.pickerHeight);
|
||||
|
||||
[self.alertView addSubview:self.pickerView];
|
||||
}
|
||||
|
||||
|
||||
13
Pods/BRPickerView/README.md
generated
13
Pods/BRPickerView/README.md
generated
@@ -4,7 +4,7 @@ BRPickerView 封装的是iOS中常用的选择器组件,主要包括:日期
|
||||
|
||||
【说明】
|
||||
|
||||
- 当前最新版本为: `2.8.1` 。
|
||||
- 当前最新版本为: `2.8.0` 。
|
||||
- 如果不能找到最新版本,请先执行一下 `pod repo update` 更新本地仓库,待更新完成后;再执行 `pod search BRPickerView` 进行搜索,就会看到最新版本。
|
||||
|
||||
# 效果演示
|
||||
@@ -57,7 +57,7 @@ typedef NS_ENUM(NSInteger, BRDatePickerMode) {
|
||||
/** 【HH:mm】UIDatePickerModeCountDownTimer */
|
||||
BRDatePickerModeCountDownTimer,
|
||||
|
||||
// ----- 以下14种是自定义样式 -----
|
||||
// ----- 以下11种是自定义样式 -----
|
||||
/** 【yyyy-MM-dd HH:mm:ss】年月日时分秒 */
|
||||
BRDatePickerModeYMDHMS,
|
||||
/** 【yyyy-MM-dd HH:mm】年月日时分 */
|
||||
@@ -79,14 +79,7 @@ typedef NS_ENUM(NSInteger, BRDatePickerMode) {
|
||||
/** 【HH:mm】时分 */
|
||||
BRDatePickerModeHM,
|
||||
/** 【mm:ss】分秒 */
|
||||
BRDatePickerModeMS,
|
||||
|
||||
/** 【yyyy-qq】年季度 */
|
||||
BRDatePickerModeYQ,
|
||||
/** 【yyyy-MM-ww】年月周 */
|
||||
BRDatePickerModeYMW,
|
||||
/** 【yyyy-ww】年周 */
|
||||
BRDatePickerModeYW
|
||||
BRDatePickerModeMS
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user