From ee5976a4a94a9383ab7896828e61e25e8c44fccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A1=E1=86=BC=E1=84=92=E1=85=AD=E1=84=8B?= =?UTF-8?q?=E1=85=AF=E1=86=AB?= Date: Thu, 5 Jan 2023 22:26:43 +0900 Subject: [PATCH] Added feature to set the font of the selected day in calendar --- FSCalendar/FSCalendarAppearance.h | 5 +++++ FSCalendar/FSCalendarAppearance.m | 9 +++++++++ FSCalendar/FSCalendarCell.m | 9 +++++++++ FSCalendar/FSCalendarConstants.h | 1 + FSCalendar/FSCalendarConstants.m | 1 + 5 files changed, 25 insertions(+) diff --git a/FSCalendar/FSCalendarAppearance.h b/FSCalendar/FSCalendarAppearance.h index b0af6af7..40e72834 100644 --- a/FSCalendar/FSCalendarAppearance.h +++ b/FSCalendar/FSCalendarAppearance.h @@ -49,6 +49,11 @@ typedef NS_OPTIONS(NSUInteger, FSCalendarCaseOptions) { */ @property (strong, nonatomic) UIFont *titleFont; +/** + * The font of the selected day text. + */ +@property (strong, nonatomic) UIFont *titleSelectedFont; + /** * The font of the subtitle text. */ diff --git a/FSCalendar/FSCalendarAppearance.m b/FSCalendar/FSCalendarAppearance.m index b7c0d046..4858f9e7 100644 --- a/FSCalendar/FSCalendarAppearance.m +++ b/FSCalendar/FSCalendarAppearance.m @@ -31,6 +31,7 @@ - (instancetype)init if (self) { _titleFont = [UIFont systemFontOfSize:FSCalendarStandardTitleTextSize]; + _titleSelectedFont = [UIFont systemFontOfSize:FSCalendarStandardSelectedTitleTextSize]; _subtitleFont = [UIFont systemFontOfSize:FSCalendarStandardSubtitleTextSize]; _weekdayFont = [UIFont systemFontOfSize:FSCalendarStandardWeekdayTextSize]; _headerTitleFont = [UIFont systemFontOfSize:FSCalendarStandardHeaderTextSize]; @@ -90,6 +91,14 @@ - (void)setTitleFont:(UIFont *)titleFont } } +- (void)setTitleSelectionFont:(UIFont *)titleSelectedFont +{ + if (![_titleSelectedFont isEqual:titleSelectedFont]) { + _titleSelectedFont = titleSelectedFont; + [self.calendar configureAppearance]; + } +} + - (void)setSubtitleFont:(UIFont *)subtitleFont { if (![_subtitleFont isEqual:subtitleFont]) { diff --git a/FSCalendar/FSCalendarCell.m b/FSCalendar/FSCalendarCell.m index 9c930a64..da9398ac 100644 --- a/FSCalendar/FSCalendarCell.m +++ b/FSCalendar/FSCalendarCell.m @@ -255,10 +255,19 @@ - (void)configureAppearance - (UIColor *)colorForCurrentStateInDictionary:(NSDictionary *)dictionary { if (self.isSelected) { + UIFont *titleSelectedFont = self.calendar.appearance.titleSelectedFont; + if (![titleSelectedFont isEqual:_titleLabel.font]) { + _titleLabel.font = titleSelectedFont; + } if (self.dateIsToday) { return dictionary[@(FSCalendarCellStateSelected|FSCalendarCellStateToday)] ?: dictionary[@(FSCalendarCellStateSelected)]; } return dictionary[@(FSCalendarCellStateSelected)]; + } else { + UIFont *titleFont = self.calendar.appearance.titleFont; + if (![titleFont isEqual:_titleLabel.font]) { + _titleLabel.font = titleFont; + } } if (self.dateIsToday && [[dictionary allKeys] containsObject:@(FSCalendarCellStateToday)]) { return dictionary[@(FSCalendarCellStateToday)]; diff --git a/FSCalendar/FSCalendarConstants.h b/FSCalendar/FSCalendarConstants.h index e8bf4125..4dd76142 100644 --- a/FSCalendar/FSCalendarConstants.h +++ b/FSCalendar/FSCalendarConstants.h @@ -23,6 +23,7 @@ CG_EXTERN CGFloat const FSCalendarAutomaticDimension; CG_EXTERN CGFloat const FSCalendarDefaultBounceAnimationDuration; CG_EXTERN CGFloat const FSCalendarStandardRowHeight; CG_EXTERN CGFloat const FSCalendarStandardTitleTextSize; +CG_EXTERN CGFloat const FSCalendarStandardSelectedTitleTextSize; CG_EXTERN CGFloat const FSCalendarStandardSubtitleTextSize; CG_EXTERN CGFloat const FSCalendarStandardWeekdayTextSize; CG_EXTERN CGFloat const FSCalendarStandardHeaderTextSize; diff --git a/FSCalendar/FSCalendarConstants.m b/FSCalendar/FSCalendarConstants.m index 7a56f085..54a51493 100644 --- a/FSCalendar/FSCalendarConstants.m +++ b/FSCalendar/FSCalendarConstants.m @@ -20,6 +20,7 @@ CGFloat const FSCalendarDefaultBounceAnimationDuration = 0.15; CGFloat const FSCalendarStandardRowHeight = 38; CGFloat const FSCalendarStandardTitleTextSize = 13.5; +CGFloat const FSCalendarStandardSelectedTitleTextSize = 13.5; CGFloat const FSCalendarStandardSubtitleTextSize = 10; CGFloat const FSCalendarStandardWeekdayTextSize = 14; CGFloat const FSCalendarStandardHeaderTextSize = 16.5;