最近公司做的项目需要使用日期选择器,但是ios自带的感觉使用不是很方便,而且太普通了点。所以在网上搜了些日期选择器,发现一款叫做CKcalendar的开源项目挺不错的。项目下载地址 https://github.com/jaykz52/CKCalendar。运行工程,显示效果如下
但是在使用之后发现这个开源的项目根本就没有提供接口让我们将里面的英文改成中文使用。好吧,我自己汉化
,代码我来了
。
之后发现是用
dayOfWeekLabel
这个变量来显示星期。故只要在为其赋值之前将其汉化即可。
Objective-c代码
1. (NSString *day in [self getDaysOfTheWeek]) {
2. UILabel *dayOfWeekLabel = [[UILabel alloc] initWithFrame:CGRectZero];
3. dayOfWeekLabel.text = [[self weekToChinese:day] uppercaseString];//拦击过滤
4. dayOfWeekLabel.textAlignment = UITextAlignmentCenter;
5. dayOfWeekLabel.backgroundColor = [UIColor clearColor];
6. dayOfWeekLabel.shadowColor = [UIColor whiteColor];
7. dayOfWeekLabel.shadowOffset = CGSizeMake(0, 1);
8. [labels addObject:dayOfWeekLabel];
9. [self.calendarContainer addSubview:dayOfWeekLabel];
10. }
for (NSString *day in [self getDaysOfTheWeek]) { UILabel *dayOfWeekLabel = [[UILabel alloc] initWithFrame:CGRectZero];
dayOfWeekLabel.text = [[self weekToChinese:day] uppercaseString];//拦击过滤
dayOfWeekLabel.textAlignment = UITextAlignmentCenter;
dayOfWeekLabel.backgroundColor = [UIColor clearColor];
dayOfWeekLabel.shadowColor = [UIColor whiteColor];
dayOfWeekLabel.shadowOffset = CGSizeMake(0, 1);
[labels addObject:dayOfWeekLabel];
[self.calendarContainer addSubview:dayOfWeekLabel];
}
汉化方法:
Java代码
1. - mark 自定义方法 用于汉化日历的星期
2. (NSString *) weekToChinese:(NSString *) enWeek {
3. if (!([enWeek length] > 0)) {
4. return nil;
5. }
6. NSString *upperWeek = [enWeek uppercaseString];
7. NSString *chWeek = nil;
8. if ([upperWeek isEqualToString:@"MON"]) {
9. chWeek = @"周一";
10. } else if([upperWeek isEqualToString:@"TUE"]) {
11. chWeek = @"周二";
12. } else if([upperWeek isEqualToString:@"WED"]) {
13. chWeek = @"周三";
14. } else if([upperWeek isEqualToString:@"THU"]) {
15. chWeek = @"周四";
16. } else if([upperWeek isEqualToString:@"FRI"]) {
17. chWeek = @"周五";
18. } else if([upperWeek isEqualToString:@"SAT"]) {
19. chWeek = @"周六";
20. } else if([upperWeek isEqualToString:@"SUN"]) {
21. chWeek = @"周日";
22. }
23. return chWeek;
24. }
#pragma - mark 自定义方法 用于汉化日历的星期- (NSString *) weekToChinese:(NSString *) enWeek {
if (!([enWeek length] > 0)) {
return nil;
}
NSString *upperWeek = [enWeek uppercaseString];
NSString *chWeek = nil;
if ([upperWeek isEqualToString:@"MON"]) {
chWeek = @"周一";
} else if([upperWeek isEqualToString:@"TUE"]) {
chWeek = @"周二";
} else if([upperWeek isEqualToString:@"WED"]) {
chWeek = @"周三";
} else if([upperWeek isEqualToString:@"THU"]) {
chWeek = @"周四";
} else if([upperWeek isEqualToString:@"FRI"]) {
chWeek = @"周五";
} else if([upperWeek isEqualToString:@"SAT"]) {
chWeek = @"周六";
} else if([upperWeek isEqualToString:@"SUN"]) {
chWeek = @"周日";
}
return chWeek;
}
月份的汉化同样的道理,找到相应的标签,然后对其过滤。代码如下:
Java代码
过滤方法:
1. - (void)setMonthShowing:(NSDate *)aMonthShowing {
2. _monthShowing = [self firstDayOfMonthContainingDate:aMonthShowing];
3. self.titleLabel.text = [self monthToChinese:[self.dateFormatter stringFromDate:_monthShowing]];//过滤汉化
4. [self setNeedsLayout];
5. }
- (void)setMonthShowing:(NSDate *)aMonthShowing { _monthShowing = [self firstDayOfMonthContainingDate:aMonthShowing];
self.titleLabel.text = [self monthToChinese:[self.dateFormatter stringFromDate:_monthShowing]];//过滤汉化
[self setNeedsLayout];
}
Java代码
1. - mark 自定义方法 用于汉化日历的月份
2. (NSString *) monthToChinese:(NSString *) enMonth {
3. if (!([enMonth length] > 0)) {
4. return nil;
5. }
6. NSMutableString *chMonth = [[NSMutableString alloc] init];
7. NSArray *arr = [enMonth componentsSeparatedByString:@" "];
8. NSString *arrMonth = [arr objectAtIndex:0];
9. NSString *arrYear = [arr objectAtIndex:1];
10. if ([arrMonth isEqualToString:@"January"]) {
11. [chMonth appendString:@"一月"];
12. } else if([arrMonth isEqualToString:@"February"]) {
13. [chMonth appendString:@"二月"];
14. } else if([arrMonth isEqualToString:@"March"]) {
15. [chMonth appendString:@"三月"];
16. } else if([arrMonth isEqualToString:@"April"]) {
17. [chMonth appendString:@"四月"];
18. } else if([arrMonth isEqualToString:@"May"]) {
19. [chMonth appendString:@"五月"];
20. } else if([arrMonth isEqualToString:@"June"]) {
21. [chMonth appendString:@"六月"];
22. } else if([arrMonth isEqualToString:@"July"]) {
23. [chMonth appendString:@"七月"];
24. } else if([arrMonth isEqualToString:@"August"]) {
25. [chMonth appendString:@"八月"];
26. } else if([arrMonth isEqualToString:@"September"]) {
27. [chMonth appendString:@"九月"];
28. } else if([arrMonth isEqualToString:@"October"]) {
29. [chMonth appendString:@"十月"];
30. } else if([arrMonth isEqualToString:@"November"]) {
31. [chMonth appendString:@"十一月"];
32. } else if([arrMonth isEqualToString:@"December"]) {
33. [chMonth appendString:@"十二月"];
34. }
35. [chMonth appendFormat:@" %@", arrYear];
36. return chMonth;
37. }
#pragma - mark 自定义方法 用于汉化日历的月份- (NSString *) monthToChinese:(NSString *) enMonth {
if (!([enMonth length] > 0)) {
return nil;
}
NSMutableString *chMonth = [[NSMutableString alloc] init];
NSArray *arr = [enMonth componentsSeparatedByString:@" "];
NSString *arrMonth = [arr objectAtIndex:0];
NSString *arrYear = [arr objectAtIndex:1];
if ([arrMonth isEqualToString:@"January"]) {
[chMonth appendString:@"一月"];
} else if([arrMonth isEqualToString:@"February"]) {
[chMonth appendString:@"二月"];
} else if([arrMonth isEqualToString:@"March"]) {
[chMonth appendString:@"三月"];
} else if([arrMonth isEqualToString:@"April"]) {
[chMonth appendString:@"四月"];
} else if([arrMonth isEqualToString:@"May"]) {
[chMonth appendString:@"五月"];
} else if([arrMonth isEqualToString:@"June"]) {
[chMonth appendString:@"六月"];
} else if([arrMonth isEqualToString:@"July"]) {
[chMonth appendString:@"七月"];
} else if([arrMonth isEqualToString:@"August"]) {
[chMonth appendString:@"八月"];
} else if([arrMonth isEqualToString:@"September"]) {
[chMonth appendString:@"九月"];
} else if([arrMonth isEqualToString:@"October"]) {
[chMonth appendString:@"十月"];
} else if([arrMonth isEqualToString:@"November"]) {
[chMonth appendString:@"十一月"];
} else if([arrMonth isEqualToString:@"December"]) {
[chMonth appendString:@"十二月"];
}
[chMonth appendFormat:@" %@", arrYear];
return chMonth;
}