FSCalendar/TodayExtensionExample/TodayExtension/TodayViewController.m

87 lines
3.1 KiB
Objective-C

//
// TodayViewController.m
// TodayExtension
//
// Created by dingwenchao on 9/6/16.
// Copyright © 2016 dingwenchao. All rights reserved.
//
#import "TodayViewController.h"
#import <NotificationCenter/NotificationCenter.h>
#import "FSCalendar.h"
@interface TodayViewController () <NCWidgetProviding,FSCalendarDataSource,FSCalendarDelegate,FSCalendarDelegateAppearance>
@property (weak , nonatomic) IBOutlet FSCalendar *calendar;
@property (weak , nonatomic) IBOutlet NSLayoutConstraint *calendarHeight;
@property (strong, nonatomic) NSCalendar *gregorian;
@property (strong, nonatomic) NSCalendar *lunarCalendar;
@property (strong, nonatomic) NSArray<NSString *> *lunarChars;
@end
@implementation TodayViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.calendar.today = nil;
self.calendar.locale = [NSLocale localeWithLocaleIdentifier:@"zh-CN"];
self.lunarCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];
self.lunarCalendar.locale = [NSLocale localeWithLocaleIdentifier:@"zh-CN"];
self.lunarChars = @[@"初一",@"初二",@"初三",@"初四",@"初五",@"初六",@"初七",@"初八",@"初九",@"初十",@"十一",@"十二",@"十三",@"十四",@"十五",@"十六",@"十七",@"十八",@"十九",@"二十",@"二一",@"二二",@"二三",@"二四",@"二五",@"二六",@"二七",@"二八",@"二九",@"三十"];
self.gregorian = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
self.preferredContentSize = CGSizeMake(320, 300);
}
- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler
{
[self.calendar reloadData];
completionHandler(NCUpdateResultNewData);
}
- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets
{
return UIEdgeInsetsZero;
}
- (UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance borderDefaultColorForDate:(NSDate *)date
{
return [self.gregorian isDateInToday:date] ? appearance.todayColor : nil;
}
- (UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance fillSelectionColorForDate:(NSDate *)date
{
return [UIColor clearColor];
}
- (UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance borderSelectionColorForDate:(NSDate *)date
{
return appearance.selectionColor;
}
- (NSString *)calendar:(FSCalendar *)calendar subtitleForDate:(NSDate *)date
{
NSInteger day = [_lunarCalendar components:NSCalendarUnitDay fromDate:date].day;
return _lunarChars[day-1];
}
- (IBAction)prevClicked:(id)sender
{
NSDate *prevPage = [self.gregorian dateByAddingUnit:NSCalendarUnitMonth value:-1 toDate:self.calendar.currentPage options:0];
[self.calendar setCurrentPage:prevPage animated:YES];
}
- (IBAction)nextClicked:(id)sender
{
NSDate *nextPage = [self.gregorian dateByAddingUnit:NSCalendarUnitMonth value:1 toDate:self.calendar.currentPage options:0];
[self.calendar setCurrentPage:nextPage animated:YES];
}
@end