0
点赞
收藏
分享

微信扫一扫

ios学习笔记之CKCalendar汉化


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


ios学习笔记之CKCalendar汉化_自定义方法



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


ios学习笔记之CKCalendar汉化_自定义方法

,代码我来了


ios学习笔记之CKCalendar汉化_自定义方法




 

  之后发现是用  dayOfWeekLabel  这个变量来显示星期。故只要在为其赋值之前将其汉化即可。

Objective-c代码

ios学习笔记之CKCalendar汉化_自定义方法_04

 

ios学习笔记之CKCalendar汉化_Java_05

ios学习笔记之CKCalendar汉化_自定义方法

   
   
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代码

ios学习笔记之CKCalendar汉化_自定义方法_04

 

      
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代码

ios学习笔记之CKCalendar汉化_自定义方法_04

 

ios学习笔记之CKCalendar汉化_Java_05

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汉化_自定义方法_04

 

ios学习笔记之CKCalendar汉化_Java_05

ios学习笔记之CKCalendar汉化_自定义方法

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


举报

相关推荐

0 条评论