小说绘上架版本

This commit is contained in:
xtfei2011
2021-02-07 11:24:08 +08:00
commit ee5c1c8b12
1762 changed files with 115892 additions and 0 deletions
@@ -0,0 +1,24 @@
//
// TFLanguageSetCell.h
// TFReader
//
// Created by 谢腾飞 on 2020/12/14.
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class TFLanguageSetModel;
@interface TFLanguageSetCell : UITableViewCell
@property (nonatomic, strong) TFLanguageSetModel *languageModel;
@property (nonatomic, weak) UIView *lineView;
- (void)set_selected:(BOOL)selected;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,90 @@
//
// TFLanguageSetCell.m
// TFReader
//
// Created by 谢腾飞 on 2020/12/14.
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
//
#import "TFLanguageSetCell.h"
#import "NSObject+Observer.h"
#import "TFLanguageSetModel.h"
@interface TFLanguageSetCell ()
{
__weak UIImageView *_selecteImageView;
}
@end
@implementation TFLanguageSetCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
self.selectionStyle = UITableViewCellSelectionStyleNone;
[self createSubviews];
}
return self;
}
- (void)createSubviews {
self.contentView.backgroundColor = [UIColor whiteColor];
UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.textColor = kBlackColor;
titleLabel.font = kFont16;
[self.contentView addSubview:titleLabel];
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.contentView).offset(kHalfMargin);
make.left.equalTo(self.contentView).offset(kMoreHalfMargin);
}];
UILabel *subtitleLabel = [[UILabel alloc] init];
subtitleLabel.textColor = kGrayTextColor;
subtitleLabel.font = kFont12;
[self.contentView addSubview:subtitleLabel];
[subtitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(titleLabel.mas_bottom).offset(kQuarterMargin);
make.left.right.equalTo(titleLabel);
make.height.mas_equalTo(kMoreHalfMargin);
}];
UIImageView *selectedImageView = [[UIImageView alloc] init];
_selecteImageView = selectedImageView;
selectedImageView.hidden = YES;
selectedImageView.image = [[UIImage imageNamed:@"public_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
selectedImageView.tintColor = kMainColor;
[self.contentView addSubview:selectedImageView];
[selectedImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.contentView);
make.right.equalTo(self.contentView).offset(-kMoreHalfMargin);
make.width.height.mas_equalTo(22.0);
}];
[titleLabel mas_updateConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(selectedImageView.mas_left).offset(-kHalfMargin);
}];
UIView *lineView = [[UIView alloc] init];
self.lineView = lineView;
lineView.backgroundColor = kGrayLineColor;
[self.contentView addSubview:lineView];
[lineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(kCellLineHeight);
make.left.equalTo(titleLabel);
make.right.equalTo(selectedImageView);
make.bottom.equalTo(self.contentView);
make.top.equalTo(subtitleLabel.mas_bottom).offset(kHalfMargin).priorityLow();
}];
[self addObserver:KEY_PATH(self, languageModel) complete:^(id _Nonnull obj, id _Nullable oldVal, TFLanguageSetModel * _Nullable newVal) {
titleLabel.text = newVal.title ?: @"";
subtitleLabel.text = newVal.subtitle ?: @"";
}];
}
- (void)set_selected:(BOOL)selected {
_selecteImageView.hidden = !selected;
}
@end
@@ -0,0 +1,18 @@
//
// TFLanguageSetController.h
// TFReader
//
// Created by 谢腾飞 on 2020/12/14.
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "TFBasicViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface TFLanguageSetController : TFBasicViewController
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,162 @@
//
// TFLanguageSetController.m
// TFReader
//
// Created by 谢腾飞 on 2020/12/14.
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
//
#import "TFLanguageSetController.h"
#import "TFLanguageSetCell.h"
#import "TFLanguageSetModel.h"
@interface TFLanguageSetController ()<UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, strong) NSMutableArray<TFLanguageSetModel *> *dataArray;
/// 当前选择的下标
@property (nonatomic, assign) NSInteger selectedIndex;
@property (nonatomic, weak) UIButton *saveBtn;
@end
@implementation TFLanguageSetController
- (void)viewDidLoad
{
[super viewDidLoad];
[self initialize];
[self createSubviews];
}
#pragma mark - 初始化
- (void)initialize
{
self.view.backgroundColor = kGrayViewColor;
[self setNavigationBarTitle:TFLocalizedString(@"多语言环境")];
self.dataArray = [NSMutableArray array];
TFLanguageSetModel *t_model = [[TFLanguageSetModel alloc] init];
t_model.language = TFLanguageTypeDefault;
t_model.title = TFLocalizedString(@"自动");
switch (TFLanguageManager.localizedLanguage) {
case TFLanguageTypeSimplifiedChinese:
t_model.subtitle = @"简体中文";
break;
case TFLanguageTypeTraditionalChinese:
t_model.subtitle = @"繁体中文";
break;
case TFLanguageTypeEnglish:
t_model.subtitle = @"English";
break;
case TFLanguageTypeTail:
t_model.subtitle = @"ไทย";
break;
default:
break;
}
[self.dataArray addObject:t_model];
t_model = [[TFLanguageSetModel alloc] init];
t_model.language = TFLanguageTypeSimplifiedChinese;
t_model.title = @"简体中文";
t_model.subtitle = TFLocalizedString(@"简体中文");
[self.dataArray addObject:t_model];
t_model = [[TFLanguageSetModel alloc] init];
t_model.language = TFLanguageTypeTraditionalChinese;
t_model.title = @"繁體中文";
t_model.subtitle = TFLocalizedString(@"繁體中文");
[self.dataArray addObject:t_model];
t_model = [[TFLanguageSetModel alloc] init];
t_model.language = TFLanguageTypeEnglish;
t_model.title = @"English";
t_model.subtitle = TFLocalizedString(@"English");
[self.dataArray addObject:t_model];
t_model = [[TFLanguageSetModel alloc] init];
t_model.language = TFLanguageTypeTail;
t_model.title = @"ไทย";
t_model.subtitle = TFLocalizedString(@"ไทย");
[self.dataArray addObject:t_model];
self.selectedIndex = TFLanguageManager.userLanguage;
}
#pragma mark - UI
- (void)createSubviews {
UIButton *saveBtn = nil;
[self setNavigationBarRightButton:({
saveBtn = [UIButton buttonWithType:UIButtonTypeSystem];
self.saveBtn = saveBtn;
[saveBtn setTitle:TFLocalizedString(@"保存") forState:UIControlStateNormal];
[saveBtn setTitleColor:kGrayTextColor forState:UIControlStateDisabled];
[saveBtn setTitleColor:kColorRGB(44, 144, 255) forState:UIControlStateNormal];
saveBtn.backgroundColor = [UIColor clearColor];
saveBtn.titleLabel.font = kFont15;
saveBtn.enabled = NO;
[saveBtn addTarget:self action:@selector(changeLanguage) forControlEvents:UIControlEventTouchUpInside];
saveBtn;
})];
[saveBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.navigationBar).offset(-kQuarterMargin);
make.centerY.equalTo(self.navigationBar.navTitleLabel);
make.size.mas_equalTo(CGSizeMake(50.0, 20.0));
}];
saveBtn.hidden = YES;
self.mainTableView.dataSource = self;
self.mainTableView.delegate = self;
[self.view addSubview:self.mainTableView];
self.mainTableView.contentInset = UIEdgeInsetsMake(0, 0, PUB_TABBAR_OFFSET, 0);
[self.mainTableView registerClass:TFLanguageSetCell.class forCellReuseIdentifier:TFLanguageSetCell.className];
[self.mainTableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.width.bottom.equalTo(self.view);
make.top.equalTo(self.view).offset(PUB_NAVBAR_HEIGHT);
}];
}
#pragma mark UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.dataArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TFLanguageSetCell *cell = [tableView dequeueReusableCellWithIdentifier:TFLanguageSetCell.className forIndexPath:indexPath];
cell.languageModel = self.dataArray[indexPath.row];
cell.lineView.hidden = (indexPath.row == self.dataArray.count - 1);
[cell set_selected:(self.selectedIndex == indexPath.row)];
return cell;
}
#pragma mark UITableViewDelegate
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return kHalfMargin;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *view = [[UIView alloc] init];
view.backgroundColor = kGrayViewColor;
return view;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
TFLanguageSetCell *oldCell = (TFLanguageSetCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:self.selectedIndex inSection:indexPath.section]];
[oldCell set_selected:NO];
self.selectedIndex = indexPath.row;
[self changeLanguage];
}
/// 切换语言
- (void)changeLanguage {
TFLanguageSetModel *t_model = self.dataArray[self.selectedIndex];
[TFLanguageManager setLanguageType:t_model.language];
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:TFLocalizedString(@"切换成功")];
[TFNetworkTools POST:Switch_Language parameters:nil model:nil success:nil failure:nil];
}
@end
@@ -0,0 +1,24 @@
//
// TFLanguageSetModel.h
// TFReader
//
// Created by 谢腾飞 on 2020/12/14.
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface TFLanguageSetModel : NSObject
@property (nonatomic, assign) TFLanguageType language;
/// 标题使用的是该语言国家的本地语言展示,不会进行国际化
@property (nonatomic, copy) NSString *title;
/// 子标题是标题国际化之后的状态
@property (nonatomic, copy) NSString *subtitle;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,13 @@
//
// TFLanguageSetModel.m
// TFReader
//
// Created by 谢腾飞 on 2020/12/14.
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
//
#import "TFLanguageSetModel.h"
@implementation TFLanguageSetModel
@end