ios学习笔记之CKCalendar汉化

本文介绍如何将CKCalendar开源项目的日期选择器从英文汉化为中文。通过修改代码实现星期和月份的中文显示,并提供了完整的汉化方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

    之后发现是用  dayOfWeekLabel  这个变量来显示星期。故只要在为其赋值之前将其汉化即可。
Objective-c代码 复制代码  收藏代码ios学习笔记之CKCalendar汉化
  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(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代码 复制代码  收藏代码ios学习笔记之CKCalendar汉化
  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.  
#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代码 复制代码  收藏代码ios学习笔记之CKCalendar汉化
  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代码 复制代码  收藏代码ios学习笔记之CKCalendar汉化
  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.  
#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;
}


汉化后的运行效果如下:

ios学习笔记之CKCalendar汉化


最后附上整个工程的代码:


转载请说明出处http://ff20081528.iteye.com/blog/1678018
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值