小说绘上架版本
This commit is contained in:
+19
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// TFReadNovelBackgroundController.h
|
||||
// TFReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/15.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TFReadNovelBackgroundController : UIViewController
|
||||
|
||||
- (void)updateWithViewController:(UIViewController *)viewController;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// TFReadNovelBackgroundController.m
|
||||
// TFReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/15.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TFReadNovelBackgroundController.h"
|
||||
#import "TFReaderSettingHelper.h"
|
||||
#import "TFAdvertisementManager.h"
|
||||
|
||||
@interface TFReadNovelBackgroundController ()
|
||||
|
||||
@property (nonatomic ,weak) UIImageView *backgroundImageView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation TFReadNovelBackgroundController
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
if (self = [super init]) {
|
||||
[self createSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)createSubviews
|
||||
{
|
||||
self.view.backgroundColor = [[TFReaderSettingHelper sharedManager] getReaderBackgroundColor];
|
||||
|
||||
UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
|
||||
backgroundImageView.backgroundColor = self.view.backgroundColor;
|
||||
self.backgroundImageView = backgroundImageView;
|
||||
[self.view addSubview:backgroundImageView];
|
||||
}
|
||||
|
||||
- (void)updateWithViewController:(UIViewController *)viewController
|
||||
{
|
||||
self.backgroundImageView.frame = viewController.view.bounds;
|
||||
self.backgroundImageView.image = [self captureView:viewController.view];
|
||||
self.backgroundImageView.alpha = 0.6;
|
||||
}
|
||||
|
||||
- (UIImage *)captureView:(UIView *)view
|
||||
{
|
||||
UIImage * __block image = nil;
|
||||
kCodeSync({
|
||||
CGRect rect = view.bounds;
|
||||
UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0.0f);
|
||||
CGContextRef context = UIGraphicsGetCurrentContext();
|
||||
|
||||
CGAffineTransform transform = CGAffineTransformMake(-1.0, 0.0, 0.0, 1.0, rect.size.width, 0.0);
|
||||
CGContextConcatCTM(context,transform);
|
||||
[view.layer renderInContext:context];
|
||||
image = UIGraphicsGetImageFromCurrentImageContext();
|
||||
UIGraphicsEndImageContext();
|
||||
});
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
@end
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// TFReadNovelTextController.h
|
||||
// TFReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/15.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TFReadNovelTextController : UIViewController
|
||||
|
||||
@property (nonatomic ,copy) NSAttributedString *contentString;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
+269
@@ -0,0 +1,269 @@
|
||||
//
|
||||
// TFReadNovelTextController.m
|
||||
// TFReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/15.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TFReadNovelTextController.h"
|
||||
#import "TYAttributedLabel.h"
|
||||
#import "TFReaderBookManager.h"
|
||||
#import "TFReaderSettingHelper.h"
|
||||
#import "WXYZ_BatteryView.h"
|
||||
#import "TFEmptyViewHeader.h"
|
||||
#import "WXYZ_BookReaderMenuPayView.h"
|
||||
#import "NSAttributedString+TReaderPage.h"
|
||||
#import "TFNetworkManager.h"
|
||||
|
||||
#import "TFReaderBookManager.h"
|
||||
|
||||
@interface TFReadNovelTextController ()
|
||||
{
|
||||
UILabel *emptyTitleLabel;
|
||||
UIButton *emptyButton;
|
||||
}
|
||||
|
||||
@property (nonatomic ,strong) UILabel *chapterTitleLabel;
|
||||
|
||||
@property (nonatomic ,strong) UILabel *bookNameLabel;
|
||||
|
||||
@property (nonatomic ,strong) UILabel *pageNumberLabel;
|
||||
|
||||
@property (nonatomic ,strong) TYAttributedLabel *chapterContentLabel;
|
||||
|
||||
@property (nonatomic ,strong) WXYZ_BatteryView *battery;
|
||||
|
||||
@property (nonatomic ,strong) WXYZ_BookReaderMenuPayView *payView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation TFReadNovelTextController
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
self.view.backgroundColor = [[TFReaderSettingHelper sharedManager] getReaderBackgroundColor];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadFrame) name:Notification_Check_Setting_Update object:nil];
|
||||
|
||||
WS(weakSelf)
|
||||
[TFReaderSettingHelper sharedManager].readerBackgroundViewChanged = ^() {
|
||||
[weakSelf reloadSubviews];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:NSNotification_Retry_Chapter object:nil];
|
||||
};
|
||||
}
|
||||
|
||||
- (void)setContentString:(NSAttributedString *)contentString
|
||||
{
|
||||
if ([contentString.string isEqualToString:k_Chapter_RequstFail] || !contentString) {
|
||||
[self createEmptyView];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:NSNotification_EmptyView_Changed object:@1];
|
||||
return;
|
||||
}
|
||||
[self reloadSubviews];
|
||||
|
||||
if ([[TFReaderBookManager sharedManager] isPreviewChapter] && contentString.length > 1) {
|
||||
CGSize size = CGSizeMake(CGRectGetWidth(self.chapterContentLabel.bounds), CGRectGetHeight(self.chapterContentLabel.bounds) / 2.0);
|
||||
NSArray<NSValue *> *t_arr = [contentString pageRangeArrayWithConstrainedToSize:size];
|
||||
if (t_arr.count > 0) {
|
||||
NSRange range = [t_arr.firstObject rangeValue];
|
||||
contentString = [contentString attributedSubstringFromRange:range];
|
||||
}
|
||||
|
||||
[self payView];
|
||||
} else {
|
||||
TFReaderBookManager *manager = [TFReaderBookManager sharedManager];
|
||||
NSString *chapter_id = [NSString stringWithFormat:@"%zd", manager.chapter_id];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Production_Pay_Success object:@[chapter_id]];
|
||||
_payView.hidden = YES;
|
||||
}
|
||||
|
||||
_contentString = contentString;
|
||||
self.chapterContentLabel.attributedText = contentString;
|
||||
|
||||
// 总章节页数
|
||||
NSUInteger totalChapterPagerCount = [[TFReaderBookManager sharedManager] totalChapterPagerCount];
|
||||
NSUInteger readedPagerCount = ([[TFReaderBookManager sharedManager] currentPagerIndex] + 1) + (([[TFReaderBookManager sharedManager] currentChapterPagerCount]) * ([[TFReaderBookManager sharedManager] currentChapterIndex]));
|
||||
|
||||
float progressValue = [[NSNumber numberWithUnsignedInteger:readedPagerCount] floatValue] / [[NSNumber numberWithUnsignedInteger:totalChapterPagerCount] floatValue] * 100;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
self.pageNumberLabel.text = [NSString stringWithFormat:@"%.1lf%@", progressValue < 0.1?0.1f:progressValue, @"%"];
|
||||
});
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:NSNotification_EmptyView_Changed object:@0];
|
||||
}
|
||||
|
||||
- (void)reloadSubviews
|
||||
{
|
||||
kCodeSync({
|
||||
self.view.backgroundColor = [[TFReaderSettingHelper sharedManager] getReaderBackgroundColor];
|
||||
|
||||
UIColor *textColor = [[TFReaderSettingHelper sharedManager] getReaderTextColor];
|
||||
UIColor *titleTextColor = [[TFReaderSettingHelper sharedManager] getReaderTitleTextColor];
|
||||
|
||||
self.chapterContentLabel.font = [UIFont systemFontOfSize:[[TFReaderSettingHelper sharedManager] getReaderFontSize]];
|
||||
self.chapterContentLabel.linesSpacing = [[TFReaderSettingHelper sharedManager] getReaderLinesSpacing];
|
||||
|
||||
self.bookNameLabel.text = [[TFReaderBookManager sharedManager] getBookName];
|
||||
self.bookNameLabel.textColor = titleTextColor;
|
||||
|
||||
self.chapterTitleLabel.text = [[TFReaderBookManager sharedManager] getChapterTitle];
|
||||
self.chapterTitleLabel.textColor = titleTextColor;
|
||||
|
||||
self.chapterContentLabel.textColor = textColor;
|
||||
|
||||
self.battery.batteryTintColor = titleTextColor;
|
||||
|
||||
self.pageNumberLabel.textColor = [[TFReaderSettingHelper sharedManager] getReaderTitleTextColor];
|
||||
self.pageNumberLabel.hidden = NO;
|
||||
|
||||
emptyButton.hidden = YES;
|
||||
emptyTitleLabel.hidden = YES;
|
||||
|
||||
if ([TFReaderBookManager sharedManager].currentChapterIndex == 0 && [TFReaderBookManager sharedManager].currentPagerIndex == 0) {
|
||||
self.chapterTitleLabel.hidden = YES;
|
||||
self.battery.hidden = YES;
|
||||
self.pageNumberLabel.hidden = YES;
|
||||
self.bookNameLabel.hidden = YES;
|
||||
} else {
|
||||
self.chapterTitleLabel.hidden = NO;
|
||||
self.battery.hidden = NO;
|
||||
self.pageNumberLabel.hidden = NO;
|
||||
self.bookNameLabel.hidden = NO;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
- (void)reloadFrame
|
||||
{
|
||||
[self reloadSubviews];
|
||||
_pageNumberLabel.frame = CGRectMake(SCREEN_WIDTH / 2, [[TFReaderSettingHelper sharedManager] getReaderViewBottom] + kHalfMargin, (SCREEN_WIDTH - 2 * kMargin) / 2, kMargin);
|
||||
_battery.frame = CGRectMake(kMargin, [[TFReaderSettingHelper sharedManager] getReaderViewBottom] + kHalfMargin, SCREEN_WIDTH / 2, kMargin);
|
||||
_bookNameLabel.frame = CGRectMake(SCREEN_WIDTH / 3, [[TFReaderSettingHelper sharedManager] getReaderViewBottom] + kHalfMargin, SCREEN_WIDTH / 3, kMargin);
|
||||
_chapterContentLabel.frame = [[TFReaderSettingHelper sharedManager] getReaderViewFrame];
|
||||
}
|
||||
|
||||
- (UILabel *)pageNumberLabel
|
||||
{
|
||||
if (!_pageNumberLabel) {
|
||||
_pageNumberLabel = [[UILabel alloc] initWithFrame:CGRectMake(SCREEN_WIDTH / 2, [[TFReaderSettingHelper sharedManager] getReaderViewBottom] + kHalfMargin, (SCREEN_WIDTH - 2 * kMargin) / 2, kMargin)];
|
||||
_pageNumberLabel.text = @"0.1%";
|
||||
_pageNumberLabel.font = kFont12;
|
||||
_pageNumberLabel.hidden = YES;
|
||||
_pageNumberLabel.textAlignment = NSTextAlignmentRight;
|
||||
[self.view addSubview:_pageNumberLabel];
|
||||
}
|
||||
return _pageNumberLabel;
|
||||
}
|
||||
|
||||
- (WXYZ_BatteryView *)battery
|
||||
{
|
||||
if (!_battery) {
|
||||
_battery = [[WXYZ_BatteryView alloc] initWithFrame:CGRectMake(kMargin, [[TFReaderSettingHelper sharedManager] getReaderViewBottom] + kHalfMargin, SCREEN_WIDTH / 2, kMargin)];
|
||||
[self.view addSubview:_battery];
|
||||
}
|
||||
return _battery;
|
||||
}
|
||||
|
||||
- (UILabel *)bookNameLabel
|
||||
{
|
||||
if (!_bookNameLabel) {
|
||||
_bookNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(SCREEN_WIDTH / 3, [[TFReaderSettingHelper sharedManager] getReaderViewBottom] + kHalfMargin, SCREEN_WIDTH / 3, kMargin)];
|
||||
_bookNameLabel.font = kFont12;
|
||||
_bookNameLabel.textAlignment = NSTextAlignmentCenter;
|
||||
[self.view addSubview:_bookNameLabel];
|
||||
}
|
||||
return _bookNameLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)chapterTitleLabel
|
||||
{
|
||||
if (!_chapterTitleLabel) {
|
||||
_chapterTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(kMargin, kMargin + PUB_NAVBAR_OFFSET, (SCREEN_WIDTH - 2 * kMargin) / 2, kMargin)];
|
||||
_chapterTitleLabel.font = kFont12;
|
||||
_chapterTitleLabel.textAlignment = NSTextAlignmentLeft;
|
||||
[self.view addSubview:_chapterTitleLabel];
|
||||
}
|
||||
return _chapterTitleLabel;
|
||||
}
|
||||
|
||||
- (TYAttributedLabel *)chapterContentLabel
|
||||
{
|
||||
if (!_chapterContentLabel) {
|
||||
_chapterContentLabel = nil;
|
||||
kCodeSync({
|
||||
_chapterContentLabel = [[TYAttributedLabel alloc] init];
|
||||
_chapterContentLabel.frame = [[TFReaderSettingHelper sharedManager] getReaderViewFrame];
|
||||
_chapterContentLabel.font = [UIFont systemFontOfSize:[[TFReaderSettingHelper sharedManager] getReaderFontSize]];
|
||||
_chapterContentLabel.backgroundColor = [UIColor clearColor];
|
||||
_chapterContentLabel.linesSpacing = [[TFReaderSettingHelper sharedManager] getReaderLinesSpacing];
|
||||
_chapterContentLabel.lineBreakMode = NSLineBreakByWordWrapping;
|
||||
[self.view addSubview:_chapterContentLabel];
|
||||
});
|
||||
}
|
||||
return _chapterContentLabel;
|
||||
}
|
||||
|
||||
- (WXYZ_BookReaderMenuPayView *)payView
|
||||
{
|
||||
if (!_payView) {
|
||||
_payView = [[WXYZ_BookReaderMenuPayView alloc] init];
|
||||
[self.view addSubview:_payView];
|
||||
}
|
||||
_payView.hidden = NO;
|
||||
return _payView;
|
||||
}
|
||||
|
||||
- (void)createEmptyView
|
||||
{
|
||||
if (!emptyTitleLabel) {
|
||||
emptyTitleLabel = [[UILabel alloc] init];
|
||||
emptyTitleLabel.textColor = [TFReaderSettingHelper sharedManager].getReaderTextColor;
|
||||
emptyTitleLabel.font = kFont16;
|
||||
emptyTitleLabel.text = TFLocalizedString(@"内容加载失败");
|
||||
emptyTitleLabel.textAlignment = NSTextAlignmentCenter;
|
||||
[self.view addSubview:emptyTitleLabel];
|
||||
|
||||
[emptyTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(self.view.mas_centerY).with.offset(- kHalfMargin);
|
||||
make.left.mas_equalTo(0);
|
||||
make.width.mas_equalTo(SCREEN_WIDTH);
|
||||
make.height.mas_equalTo(kLabelHeight);
|
||||
}];
|
||||
}
|
||||
|
||||
if (!emptyButton) {
|
||||
emptyButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
emptyButton.backgroundColor = [UIColor clearColor];
|
||||
emptyButton.layer.cornerRadius = 15;
|
||||
emptyButton.layer.borderColor = [TFReaderSettingHelper sharedManager].getReaderTextColor.CGColor;
|
||||
emptyButton.layer.borderWidth = 1.0;
|
||||
[emptyButton setTitle:TFLocalizedString(@"重试") forState:UIControlStateNormal];
|
||||
[emptyButton setTitleColor:[TFReaderSettingHelper sharedManager].getReaderTextColor forState:UIControlStateNormal];
|
||||
[emptyButton.titleLabel setFont:kFont12];
|
||||
[emptyButton addTarget:self action:@selector(retryClick:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[self.view addSubview:emptyButton];
|
||||
|
||||
[emptyButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.view.mas_centerX);
|
||||
make.top.mas_equalTo(emptyTitleLabel.mas_bottom);
|
||||
make.width.mas_equalTo(80);
|
||||
make.height.mas_equalTo(kLabelHeight);
|
||||
}];
|
||||
}
|
||||
|
||||
emptyButton.hidden = NO;
|
||||
emptyTitleLabel.hidden = NO;
|
||||
}
|
||||
|
||||
- (void)retryClick:(UIButton *)sender
|
||||
{
|
||||
if (![TFNetworkManager networkingStatus] || [TFNetworkManager currentNetworkStatus] == kCTCellularDataRestrictedStateUnknown) {
|
||||
return;
|
||||
}
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:NSNotification_Retry_Chapter object:@"1"];
|
||||
}
|
||||
|
||||
@end
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// TFReadNovelViewController.h
|
||||
// TFReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/15.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "TFBasicViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class TFProductionModel;
|
||||
@interface TFReadNovelViewController : TFBasicViewController
|
||||
|
||||
- (instancetype)initWithSpecificIndex:(NSInteger)specificIndex chapterSort:(NSInteger)chapterSort;
|
||||
|
||||
- (instancetype)initWithChapterIndex:(NSInteger)specifiedChapter;
|
||||
|
||||
@property (nonatomic ,assign) NSInteger book_id;
|
||||
|
||||
@property (nonatomic ,strong) TFProductionModel *bookModel;
|
||||
|
||||
/// 跳转到指定章节
|
||||
@property (nonatomic ,assign) NSInteger specifiedChapter;
|
||||
|
||||
/// 跳转到指定页码
|
||||
@property (nonatomic ,assign) NSInteger specifiedPage;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
+1228
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// TFReaderBookManager.h
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TFReaderBookManager : NSObject
|
||||
// 当前阅读章节
|
||||
@property (nonatomic, assign) NSInteger currentChapterIndex;
|
||||
|
||||
// 当前页数
|
||||
@property (nonatomic, assign) NSInteger currentPagerIndex;
|
||||
|
||||
// 书籍id
|
||||
@property (nonatomic, assign) NSInteger book_id;
|
||||
|
||||
// 章节id
|
||||
@property (nonatomic, assign) NSInteger chapter_id;
|
||||
|
||||
// 下一页
|
||||
@property (nonatomic, assign) NSInteger nextPagerIndex;
|
||||
|
||||
// 上一页
|
||||
@property (nonatomic, assign) NSInteger previousPagerIndex;
|
||||
|
||||
// 当前章节页数
|
||||
@property (nonatomic, assign, readonly) NSInteger currentChapterPagerCount;
|
||||
|
||||
// 总章节数
|
||||
@property (nonatomic, assign, readonly) NSInteger totalChapterCount;
|
||||
|
||||
// 书籍总页数
|
||||
@property (nonatomic, assign, readonly) NSInteger totalChapterPagerCount;
|
||||
|
||||
@property (nonatomic, strong, readonly) TFProductionChapterModel *chapterModel;
|
||||
|
||||
@property (nonatomic, strong) TFProductionModel *bookModel;
|
||||
|
||||
/// 章节末尾投票数
|
||||
@property (nonatomic, copy, nullable) NSString *reward_num;
|
||||
|
||||
/// 章节末尾月票数
|
||||
@property (nonatomic, copy, nullable) NSString *ticket_num;
|
||||
|
||||
/// 书签标记位置
|
||||
@property (nonatomic, assign) NSInteger markIndex;
|
||||
|
||||
interface_singleton
|
||||
|
||||
// 获取书籍名称
|
||||
- (NSString *)getBookName;
|
||||
|
||||
// 获取章节名称
|
||||
- (NSString *)getChapterTitle;
|
||||
|
||||
// 是否是预览章节
|
||||
- (BOOL)isPreviewChapter;
|
||||
|
||||
// 是否有下章节
|
||||
- (BOOL)haveNextChapter;
|
||||
|
||||
// 是否有上章节
|
||||
- (BOOL)havePreChapter;
|
||||
|
||||
// 是否是最后一章最后一页
|
||||
- (BOOL)isTheLastPager;
|
||||
|
||||
// 是否是第一章第一页
|
||||
- (BOOL)isTheFormerPager;
|
||||
|
||||
// 是否有下一页
|
||||
- (BOOL)haveNextPager;
|
||||
|
||||
// 上一章是否有缓存
|
||||
- (BOOL)havePreCache;
|
||||
|
||||
// 下一章是否有缓存
|
||||
- (BOOL)haveNextCache;
|
||||
|
||||
// 获取下一页
|
||||
- (void)getNextPagerAttributedText:(void(^ _Nullable)(NSAttributedString *content))complete;
|
||||
|
||||
// 获取上一页
|
||||
- (void)getPrePagerAttributedText:(void(^ _Nullable)(NSAttributedString * _Nullable content))complete;
|
||||
|
||||
// 获取某一章节某一页
|
||||
- (void)getPagerAttributedTextWithChapterIndex:(NSInteger)chapterIndex pagerIndex:(NSInteger)pageIndex completionHandler:(void(^)(NSAttributedString *content))completionHandler;
|
||||
|
||||
// 获取某一章节全部内容
|
||||
- (void)getChapterTextWithBook_id:(NSInteger)book_id chapter_index:(NSInteger)chapter_index completionHandler:(void(^)(NSString *content))completionHandler;
|
||||
|
||||
// 书籍model请求
|
||||
- (void)requestBookModelWithBookId:(NSUInteger)book_id completionHandler:(void(^ _Nullable)(void))completionHandler;
|
||||
|
||||
// 获取章节所有内容
|
||||
- (NSString *)getChapterContent;
|
||||
|
||||
// 获取章节详细内容
|
||||
- (NSString *)getChapterDetailContent;
|
||||
|
||||
- (NSMutableArray *)chapterRangeArray;
|
||||
|
||||
// 预加载多个章节(不支持自动订阅 && 支持多章下载)
|
||||
- (void)downloadPrestrainChaptersWithProductionModel:(TFProductionModel *)productionModel production_id:(NSInteger)production_id chapter_id:(NSInteger)chapter_id prestrainNumber:(NSInteger)prestrainNumber;
|
||||
|
||||
// 预加载章节(支持自动订阅 && 仅支持单章下载)
|
||||
- (void)downloadPrestrainChapterWithProductionModel:(TFProductionModel *)productionModel production_id:(NSInteger)production_id chapter_id:(NSInteger)chapter_id completionHandler:(void(^ _Nullable)(NSString *chapterContentString, NSInteger production_id, NSInteger chapter_id))completionHandler;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,219 @@
|
||||
//
|
||||
// TFReaderSettingHelper.h
|
||||
// TFReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TFReaderTransitionStyle) {
|
||||
|
||||
TFReaderTransitionStylePageCurl = 0,
|
||||
TFReaderTransitionStyleScroll = 1,
|
||||
TFReaderTransitionStyleCover = 2,
|
||||
TFReaderTransitionStyleNone = 3
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TFReaderAutoReadState) {
|
||||
|
||||
TFReaderAutoReadStateStop = 0, // 停止
|
||||
TFReaderAutoReadStateStart = 1, // 开启
|
||||
TFReaderAutoReadStatePause = 2, // 暂停
|
||||
TFReaderAutoReadStateResume = 3, // 恢复
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TFReaderLineSpacingState) {
|
||||
|
||||
TFReaderLineSpacingStateBig = 0,
|
||||
TFReaderLineSpacingStateMedium = 1,
|
||||
TFReaderLineSpacingStateSmall = 2
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TFReaderPatternMode) {
|
||||
|
||||
TFReaderPatternModeDaytime = 0,
|
||||
TFReaderPatternModeNight = 1
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TFReaderBackColorMode) {
|
||||
|
||||
TFReaderBackColorYellow,
|
||||
TFReaderBackColorGreen,
|
||||
TFReaderBackColorBlue,
|
||||
TFReaderBackColorPink,
|
||||
TFReaderBackColorWhite,
|
||||
TFReaderBackColorGray,
|
||||
TFReaderBackColorBlack
|
||||
};
|
||||
|
||||
static CGFloat line_spacing_small = 5.0f;
|
||||
static CGFloat line_spacing_medium = 10.0f;
|
||||
static CGFloat line_spacing_big = 20.0f;
|
||||
|
||||
typedef void(^ReaderFontChanged)(void);
|
||||
typedef void(^ReaderBackgroundViewChanged)(void);
|
||||
typedef void(^ReaderBrightnessChanged)(void);
|
||||
typedef void(^ReaderLinesSpacingChanged)(void);
|
||||
typedef void(^ReaderTransitionStyleChanged)(TFReaderTransitionStyle transitionStyle);
|
||||
typedef void(^ReaderAutoReaderStateChanged)(TFReaderAutoReadState state);
|
||||
typedef void(^ReaderAutoReadSpeedChanged)(NSInteger readSpeed);
|
||||
|
||||
@interface TFReaderSettingHelper : NSObject
|
||||
|
||||
// 字体改变
|
||||
@property (nonatomic, copy) ReaderFontChanged readerFontChanged;
|
||||
|
||||
// 背景改变
|
||||
@property (nonatomic, copy) ReaderBackgroundViewChanged readerBackgroundViewChanged;
|
||||
|
||||
// 亮度改变
|
||||
@property (nonatomic, copy) ReaderBrightnessChanged readerBrightnessChanged;
|
||||
|
||||
// 间距改变
|
||||
@property (nonatomic, copy) ReaderLinesSpacingChanged readerLinesSpacingChanged;
|
||||
|
||||
// 翻页样式改变
|
||||
@property (nonatomic, copy) ReaderTransitionStyleChanged readerTransitionStyleChanged;
|
||||
|
||||
// 自动阅读启动或者停止
|
||||
@property (nonatomic, copy) ReaderAutoReaderStateChanged readerAutoReaderStateChanged;
|
||||
|
||||
// 改变自动阅读时间
|
||||
@property (nonatomic, copy) ReaderAutoReadSpeedChanged readerAutoReadSpeedChanged;
|
||||
|
||||
/**
|
||||
单例方法
|
||||
|
||||
@return self
|
||||
*/
|
||||
interface_singleton
|
||||
|
||||
@property (nonatomic, assign) TFReaderAutoReadState state;
|
||||
|
||||
// 开启屏幕常亮
|
||||
- (void)openScreenKeep;
|
||||
|
||||
// 关闭屏幕常亮
|
||||
- (void)closeScreenKeep;
|
||||
|
||||
// 隐藏状态栏
|
||||
- (void)hiddenStatusBar;
|
||||
|
||||
// 显示状态栏
|
||||
- (void)showStatusBar;
|
||||
|
||||
/*
|
||||
Font
|
||||
*/
|
||||
|
||||
// 设置字号
|
||||
- (void)setReaderFontSize:(CGFloat)fontSize;
|
||||
|
||||
// 获取字号
|
||||
- (CGFloat)getReaderFontSize;
|
||||
|
||||
- (CGFloat)getReaderMinFontSize;
|
||||
|
||||
- (CGFloat)getReaderMaxFontSize;
|
||||
|
||||
// 设置行间距
|
||||
- (void)setReaderLinesSpacing:(CGFloat)linesSpacing;
|
||||
|
||||
// 获取行间距
|
||||
- (CGFloat)getReaderLinesSpacing;
|
||||
|
||||
// 获取行间距类型
|
||||
- (TFReaderLineSpacingState)getReaderLineSpacingState;
|
||||
|
||||
/*
|
||||
Frame
|
||||
*/
|
||||
|
||||
// 获取页面size
|
||||
- (CGSize)getReaderViewSize;
|
||||
|
||||
// 获取页面frame
|
||||
- (CGRect)getReaderViewFrame;
|
||||
|
||||
// 获取页面bottom
|
||||
- (CGFloat)getReaderViewBottom;
|
||||
|
||||
/*
|
||||
Color
|
||||
*/
|
||||
|
||||
// 设置背景色
|
||||
- (void)setReaderBackgroundColor:(TFReaderBackColorMode)colorMode;
|
||||
|
||||
// 获取背景色枚举值
|
||||
- (TFReaderBackColorMode)getReaderBackgroundColorMode;
|
||||
|
||||
// 获取背景色
|
||||
- (UIColor *)getReaderBackgroundColor;
|
||||
|
||||
// 背景颜色合集
|
||||
- (NSArray *)getReaderBackgroundColorModeArray;
|
||||
|
||||
// 获取字体颜色
|
||||
- (UIColor *)getReaderTextColor;
|
||||
|
||||
// 获取标题字体颜色
|
||||
- (UIColor *)getReaderTitleTextColor;
|
||||
|
||||
// 获取夜间模式状态
|
||||
- (TFReaderPatternMode)getNightModeState;
|
||||
|
||||
// 设置夜间模式状态
|
||||
- (void)setNightModeState:(TFReaderPatternMode)state;
|
||||
|
||||
|
||||
/*
|
||||
Brightness
|
||||
*/
|
||||
|
||||
// 获取屏幕亮度
|
||||
- (CGFloat)getBrightness;
|
||||
|
||||
// 设定屏幕亮度
|
||||
- (void)setBrightness:(CGFloat)brightness;
|
||||
|
||||
/*
|
||||
TransitionStyle
|
||||
*/
|
||||
// 设置翻页类型
|
||||
- (void)setTransitionStyle:(TFReaderTransitionStyle)transitionStyle;
|
||||
|
||||
// 获取翻页类型
|
||||
- (TFReaderTransitionStyle)getTransitionStyle;
|
||||
|
||||
/*
|
||||
RecordLocation
|
||||
*/
|
||||
// 获取记录章节
|
||||
- (NSInteger)getMemoryChapterIndexWithBook_id:(NSUInteger)book_id;
|
||||
|
||||
// 获取记录页数
|
||||
- (NSInteger)getMemoryPagerIndexWithBook_id:(NSUInteger)book_id;
|
||||
|
||||
// 记录章节 页数
|
||||
- (void)setLocationMemoryOfChapterIndex:(NSInteger)chapterIndex pagerIndex:(NSInteger)pagerIndex book_id:(NSUInteger)book_id;
|
||||
|
||||
/*
|
||||
设置阅读速度
|
||||
*/
|
||||
// 设置阅读速度
|
||||
- (void)setReadSpeed:(NSUInteger)animationDuration;
|
||||
|
||||
// 获取阅读速度
|
||||
- (NSUInteger)getReadSpeed;
|
||||
|
||||
// 开启或关闭自动阅读
|
||||
- (void)setAutoReaderState:(TFReaderAutoReadState)state;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,409 @@
|
||||
//
|
||||
// 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
|
||||
Reference in New Issue
Block a user