| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- //
- // LBCalendarMonthWeekDaysView.m
- // Calendar module
- //
- // Created by king on 1511-4-308.
- // Copyright © 2015年 luqinbin. All rights reserved.
- //
- #import "LBCalendarMonthWeekDaysView.h"
- @implementation LBCalendarMonthWeekDaysView
- static NSArray *cacheDaysOfWeeks;
- - (instancetype)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if(!self){
- return nil;
- }
-
- [self commonInit];
-
- return self;
- }
- - (id)initWithCoder:(NSCoder *)aDecoder
- {
- self = [super initWithCoder:aDecoder];
- if(!self){
- return nil;
- }
-
- [self commonInit];
-
- return self;
- }
- - (void)commonInit
- {
- for(NSString *day in [self daysOfWeek]){
- UILabel *view = [UILabel new];
-
- view.font = self.calendarManager.calendarAppearance.weekDayTextFont;
- view.textColor = self.calendarManager.calendarAppearance.weekDayTextColor;
-
- view.textAlignment = NSTextAlignmentCenter;
- view.text = day;
-
- [self addSubview:view];
- }
- }
- - (NSArray *)daysOfWeek
- {
- if(cacheDaysOfWeeks){
- return cacheDaysOfWeeks;
- }
-
- NSDateFormatter *dateFormatter = [NSDateFormatter new];
- NSMutableArray *days = [[dateFormatter standaloneWeekdaySymbols] mutableCopy];
-
- {
- NSCalendar *calendar = self.calendarManager.calendarAppearance.calendar;
- NSUInteger firstWeekday = (calendar.firstWeekday + 6) % 7; // Sunday == 1, Saturday == 7
-
- for(int i = 0; i < firstWeekday; ++i){
- id day = [days firstObject];
- [days removeObjectAtIndex:0];
- [days addObject:day];
- }
- }
-
- switch(self.calendarManager.calendarAppearance.weekDayFormat){
- case LBCalendarWeekDayFormatSingle:
- for(NSInteger i = 0; i < days.count; ++i){
- NSString *day = days[i];
- [days replaceObjectAtIndex:i withObject:[[day uppercaseString] substringToIndex:1]];
- }
- break;
- case LBCalendarWeekDayFormatShort:
- for(NSInteger i = 0; i < days.count; ++i){
- NSString *day = days[i];
- [days replaceObjectAtIndex:i withObject:[[day uppercaseString] substringToIndex:3]];
- }
- break;
- case LBCalendarWeekDayFormatFull:
- for(NSInteger i = 0; i < days.count; ++i){
- NSString *day = days[i];
- [days replaceObjectAtIndex:i withObject:[day uppercaseString]];
- }
- break;
- }
-
- cacheDaysOfWeeks = days;
- return cacheDaysOfWeeks;
- }
- - (void)layoutSubviews
- {
- CGFloat x = 0;
- CGFloat width = self.frame.size.width / 7.;
- CGFloat height = self.frame.size.height;
-
- for(UIView *view in self.subviews){
- view.frame = CGRectMake(x, 0, width, height);
- x = CGRectGetMaxX(view.frame);
- }
-
- }
- + (void)beforeReloadAppearance
- {
- cacheDaysOfWeeks = nil;
- }
- - (void)reloadAppearance
- {
- for(int i = 0; i < self.subviews.count; ++i){
- UILabel *view = [self.subviews objectAtIndex:i];
-
- view.font = self.calendarManager.calendarAppearance.weekDayTextFont;
- view.textColor = self.calendarManager.calendarAppearance.weekDayTextColor;
-
- view.text = [[self daysOfWeek] objectAtIndex:i];
- }
- }
- @end
|