部分需求修改

This commit is contained in:
DDIsFriend
2023-10-24 10:09:59 +08:00
parent 529d44d51d
commit c11aab7e05
45 changed files with 8039 additions and 8542 deletions

View File

@@ -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

View File

@@ -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];
}

View File

@@ -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;

View File

@@ -17,9 +17,6 @@
"分" = " ";
"秒" = " ";
"周" = " ";
"季度" = " ";
"上午" = "AM";
"下午" = "PM";

View File

@@ -17,9 +17,6 @@
"分" = "分";
"秒" = "秒";
"周" = "周";
"季度" = "季度";
"上午" = "上午";
"下午" = "下午";

View File

@@ -17,9 +17,6 @@
"分" = "分";
"秒" = "秒";
"周" = "周";
"季度" = "季度";
"上午" = "上午";
"下午" = "下午";

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -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];

View File

@@ -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

View File

@@ -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];
}

View File

@@ -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
};
```