// // TFReaderSettingHelper.m // TFReader // // Created by 谢腾飞 on 2020/12/2. // Copyright © 2020 xtfei_2011@126.com. All rights reserved. // #import "TFReaderSettingHelper.h" #import "AppDelegate.h" #define PUB_DEFAULT_READ_SPEED 10 #define PUB_MIN_READ_SPEED 5 #define PUB_MAX_READ_SPEED 60 @implementation TFReaderSettingHelper implementation_singleton(TFReaderSettingHelper) #pragma mark - Screen // 开启屏幕常亮 - (void)openScreenKeep { [UIApplication sharedApplication].idleTimerDisabled = YES; } // 关闭屏幕常亮 - (void)closeScreenKeep { [UIApplication sharedApplication].idleTimerDisabled = NO; } #pragma mark - Status - (void)hiddenStatusBar { [UIApplication sharedApplication].statusBarHidden = YES; } - (void)showStatusBar { [UIApplication sharedApplication].statusBarHidden = NO; } #pragma mark - Font - (void)setReaderFontSize:(CGFloat)fontSize { [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:fontSize] forKey:TF_READER_FONT]; [[NSUserDefaults standardUserDefaults] synchronize]; if (self.readerFontChanged) { self.readerFontChanged(); } } - (CGFloat)getReaderFontSize { CGFloat textFontSize = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_FONT] floatValue]; if (!textFontSize || textFontSize <= [self getReaderMinFontSize]) { return [self getReaderMinFontSize]; } if (textFontSize >= [self getReaderMaxFontSize]) { return [self getReaderMaxFontSize]; } return textFontSize; } - (CGFloat)getReaderMinFontSize { return kFontSize15; } - (CGFloat)getReaderMaxFontSize { return kFontSize30; } // 设置行间距 - (void)setReaderLinesSpacing:(CGFloat)linesSpacing { [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:linesSpacing] forKey:TF_READER_LINESPACING]; [[NSUserDefaults standardUserDefaults] synchronize]; if (self.readerLinesSpacingChanged) { self.readerLinesSpacingChanged(); } } // 获取行间距 - (CGFloat)getReaderLinesSpacing { CGFloat t_linesSpacing = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_LINESPACING] floatValue]; if (t_linesSpacing == 0) { [self setReaderLinesSpacing:line_spacing_medium]; return line_spacing_medium; } return t_linesSpacing; } - (TFReaderLineSpacingState)getReaderLineSpacingState { CGFloat t_lineSpacing = [self getReaderLinesSpacing]; if (t_lineSpacing == line_spacing_small) { return TFReaderLineSpacingStateSmall; } else if (t_lineSpacing == line_spacing_medium) { return TFReaderLineSpacingStateMedium; } else { return TFReaderLineSpacingStateBig; } } #pragma mark - Frame - (CGSize)getReaderViewSize { return [self getReaderViewFrame].size; } - (CGRect)getReaderViewFrame { AppDelegate *appDelegate = (AppDelegate *)kRCodeSync([[UIApplication sharedApplication] delegate]); if (!appDelegate.checkSettingModel.ad_status_setting.chapter_read_bottom) { return CGRectMake(kMargin, 2 * kMargin + PUB_NAVBAR_OFFSET + 10, SCREEN_WIDTH - 2 * kMargin, SCREEN_HEIGHT - 2 * kMargin - PUB_NAVBAR_OFFSET - PUB_TABBAR_OFFSET - 2 * kHalfMargin - kMargin); } return CGRectMake(kMargin, 2 * kMargin + PUB_NAVBAR_OFFSET + 10, SCREEN_WIDTH - 2 * kMargin, SCREEN_HEIGHT - 2 * kMargin - PUB_NAVBAR_OFFSET - 2 * kHalfMargin - kMargin - PUB_TABBAR_HEIGHT - (is_iPhoneX?-kMargin:0)); } - (CGFloat)getReaderViewBottom { return [self getReaderViewFrame].origin.y + [self getReaderViewFrame].size.height; } #pragma mark - Color // 设置背景色 - (void)setReaderBackgroundColor:(TFReaderBackColorMode)colorMode { if ([self getNightModeState] == TFReaderPatternModeNight) { return; } [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:colorMode] forKey:@"xtfei_back_color"]; [[NSUserDefaults standardUserDefaults] synchronize]; if ([self getNightModeState] == TFReaderPatternModeDaytime) { if (self.readerBackgroundViewChanged) { self.readerBackgroundViewChanged(); } } } // 获取背景色枚举值 - (TFReaderBackColorMode)getReaderBackgroundColorMode { if ([self getNightModeState] == TFReaderPatternModeNight) { return TFReaderBackColorBlack; } return [[[NSUserDefaults standardUserDefaults] objectForKey:@"xtfei_back_color"] integerValue]; } // 获取背景色 - (UIColor *)getReaderBackgroundColor { return [UIColor colorWithPatternImage:[UIImage imageNamed:[[self getReaderBackgroundColorModeArray] objectAtIndex:[self getReaderBackgroundColorMode]]]]; } - (NSArray *)getReaderBackgroundColorModeArray { return @[@"read_page_bg_yellow.png", @"read_page_bg_green.png", @"read_page_bg_blue.png", @"read_page_bg_pink.png", @"read_page_bg_white.png", @"read_page_bg_gray.png", @"read_page_bg_black.png"]; } // 获取字体颜色 - (UIColor *)getReaderTextColor { switch ([self getReaderBackgroundColorMode]) { case TFReaderBackColorYellow: return kColorRGBA(92, 66, 45, 1); case TFReaderBackColorGreen: return kColorRGBA(69, 81, 72, 1); break; case TFReaderBackColorBlue: return kColorRGBA(50, 63, 74, 1); break; case TFReaderBackColorPink: return kColorRGBA(144, 38, 61, 1); break; case TFReaderBackColorWhite: return kBlackColor; break; case TFReaderBackColorGray: return kColorRGBA(159, 161, 163, 1); break; case TFReaderBackColorBlack: return kColorRGBA(127, 127, 127, 1); break; default: break; } } // 获取标题字体颜色 - (UIColor *)getReaderTitleTextColor { CGFloat alpha = 0.5; switch ([self getReaderBackgroundColorMode]) { case TFReaderBackColorYellow: return kColorRGBA(92, 66, 45, alpha); case TFReaderBackColorGreen: return kColorRGBA(69, 81, 72, alpha); break; case TFReaderBackColorBlue: return kColorRGBA(50, 63, 74, alpha); break; case TFReaderBackColorPink: return kColorRGBA(144, 38, 61, alpha); break; case TFReaderBackColorWhite: return kColorRGBA(33, 34, 35, alpha); break; case TFReaderBackColorGray: return kColorRGBA(159, 161, 163, alpha); break; case TFReaderBackColorBlack: return kColorRGBA(127, 127, 127, alpha); break; default: break; } } // 获取夜间模式状态 - (TFReaderPatternMode)getNightModeState { NSInteger nightModeState = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_NIGHT_MODE] integerValue]; if (nightModeState == 0) { return TFReaderPatternModeDaytime; } return TFReaderPatternModeNight; } // 设置夜间模式状态 - (void)setNightModeState:(TFReaderPatternMode)state { if (state == TFReaderPatternModeDaytime) { [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:0] forKey:TF_READER_NIGHT_MODE]; [[NSUserDefaults standardUserDefaults] synchronize]; } else { [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:1] forKey:TF_READER_NIGHT_MODE]; [[NSUserDefaults standardUserDefaults] synchronize]; } if (self.readerBackgroundViewChanged) { self.readerBackgroundViewChanged(); } } #pragma mark - Brightness // 获取屏幕亮度 - (CGFloat)getBrightness { CGFloat brightness = [UIScreen mainScreen].brightness; return brightness; } // 设定屏幕亮度 - (void)setBrightness:(CGFloat)brightness { [[UIScreen mainScreen] setBrightness:brightness]; if (self.readerBrightnessChanged) { self.readerBrightnessChanged(); } } #pragma mark - TransitionStyle // 设置翻页类型 - (void)setTransitionStyle:(TFReaderTransitionStyle)transitionStyle { NSUInteger t_tStyle = 0; switch (transitionStyle) { case TFReaderTransitionStylePageCurl: t_tStyle = 0; break; case TFReaderTransitionStyleScroll: t_tStyle = 1; break; case TFReaderTransitionStyleCover: t_tStyle = 2; break; case TFReaderTransitionStyleNone: t_tStyle = 3; break; default: break; } [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:t_tStyle] forKey:TF_READER_TRANSITION_STYLE]; [[NSUserDefaults standardUserDefaults] synchronize]; if (self.readerTransitionStyleChanged) { self.readerTransitionStyleChanged(transitionStyle); } } // 获取翻页类型 - (TFReaderTransitionStyle)getTransitionStyle { NSUInteger t_transitionStyle = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_TRANSITION_STYLE] unsignedIntegerValue]; switch (t_transitionStyle) { case 0: return TFReaderTransitionStylePageCurl; break; case 1: return TFReaderTransitionStyleScroll; break; case 2: return TFReaderTransitionStyleCover; break; case 3: return TFReaderTransitionStyleNone; break; default: break; } return t_transitionStyle; } #pragma mark - RecordLocation // 获取记录章节 - (NSInteger)getMemoryChapterIndexWithBook_id:(NSUInteger)book_id { NSUInteger t_chapterIndex = [[[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"%@_%@",TF_READER_CHAPTER_INDEX, [TFUtilsHelper formatStringWithInteger:book_id]]] integerValue]; return t_chapterIndex; } // 获取记录页数 - (NSInteger)getMemoryPagerIndexWithBook_id:(NSUInteger)book_id { NSUInteger t_pagerIndex = [[[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"%@_%@",TF_READER_PAGER_INDEX, [TFUtilsHelper formatStringWithInteger:book_id]]] unsignedIntegerValue]; return t_pagerIndex; } // 记录章节 页数 - (void)setLocationMemoryOfChapterIndex:(NSInteger)chapterIndex pagerIndex:(NSInteger)pagerIndex book_id:(NSUInteger)book_id { [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:chapterIndex] forKey:[NSString stringWithFormat:@"%@_%@",TF_READER_CHAPTER_INDEX, [TFUtilsHelper formatStringWithInteger:book_id]]]; [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:pagerIndex] forKey:[NSString stringWithFormat:@"%@_%@",TF_READER_PAGER_INDEX, [TFUtilsHelper formatStringWithInteger:book_id]]]; [[NSUserDefaults standardUserDefaults] synchronize]; } /* 设置阅读速度 */ // 设置阅读速度 - (void)setReadSpeed:(NSUInteger)animationDuration { [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:animationDuration] forKey:TF_READER_READ_SPEED]; [[NSUserDefaults standardUserDefaults] synchronize]; if (self.readerAutoReadSpeedChanged) { self.readerAutoReadSpeedChanged(animationDuration); } } // 获取阅读速度 - (NSUInteger)getReadSpeed { NSInteger t_readSpeed = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_READ_SPEED] unsignedIntegerValue]; if (t_readSpeed == 0) { return PUB_DEFAULT_READ_SPEED; } if (t_readSpeed < PUB_MIN_READ_SPEED) { return PUB_MIN_READ_SPEED; } if (t_readSpeed > kFontSize30) { return PUB_MAX_READ_SPEED; } return t_readSpeed; } - (void)setAutoReaderState:(TFReaderAutoReadState)state { self.state = state; if (self.readerAutoReaderStateChanged) { self.readerAutoReaderStateChanged(state); } } @end