ios学习笔记之CKCalendar汉化

最近公司做的项目需要使用日期选择器,但是ios自带的感觉使用不是很方便,而且太普通了点。所以在网上搜了些日期选择器,发现一款叫做CKcalendar的开源项目挺不错的。项目下载地址 https://github.com/jaykz52/CKCalendar 。运行工程,显示效果如下 
 

但是在使用之后发现这个开源的项目根本就没有提供接口让我们将里面的英文改成中文使用。好吧,我自己汉化  ,代码我来了  。 

   之后发现是用  dayOfWeekLabel  这个变量来显示星期。故只要在为其赋值之前将其汉化即可。 
Objective-c代码   收藏代码
  1. for (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(01);  
  8.             [labels addObject:dayOfWeekLabel];  
  9.             [self.calendarContainer addSubview:dayOfWeekLabel];  
  10.         }  


汉化方法: 
Java代码   收藏代码
  1. #pragma - 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. }  



月份的汉化同样的道理,找到相应的标签,然后对其过滤。代码如下: 
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. }  


过滤方法: 
Java代码   收藏代码
  1. #pragma - 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. }  


汉化后的运行效果如下: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值