小说绘上架版本
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// TFDiscoverViewController.h
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TFDiscoverViewController : TFBasicViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,143 @@
|
||||
//
|
||||
// TFDiscoverViewController.m
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TFDiscoverViewController.h"
|
||||
#if TF_Enable_Comic
|
||||
#import "TFDiscoverComicViewController.h"
|
||||
#endif
|
||||
|
||||
#if TF_Enable_Book
|
||||
#import "TFDiscoverNovelViewController.h"
|
||||
#endif
|
||||
|
||||
#if TF_Enable_Audio
|
||||
#import "TFDiscoverAudioViewController.h"
|
||||
#endif
|
||||
|
||||
#import "TFLimitFreeViewController.h"
|
||||
|
||||
#import "SGPagingView.h"
|
||||
|
||||
@interface TFDiscoverViewController ()<SGPageTitleViewDelegate, SGPageContentCollectionViewDelegate>
|
||||
|
||||
@property (nonatomic ,strong) SGPageTitleView *pageTitleView;
|
||||
@property (nonatomic ,strong) SGPageContentCollectionView *pageContentCollectionView;
|
||||
@end
|
||||
|
||||
@implementation TFDiscoverViewController
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
[self initialize];
|
||||
[self createSubviews];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
|
||||
[self setStatusBarDefaultStyle];
|
||||
}
|
||||
|
||||
- (void)initialize
|
||||
{
|
||||
[self hiddenNavigationBarLeftButton];
|
||||
[self hiddenSeparator];
|
||||
}
|
||||
|
||||
- (void)createSubviews
|
||||
{
|
||||
#if TF_Enable_Comic
|
||||
TFDiscoverComicViewController *comicVC = [[TFDiscoverComicViewController alloc] init];
|
||||
comicVC.productionType = TFProductionTypeComic;
|
||||
[self addChildViewController:comicVC];
|
||||
#endif
|
||||
|
||||
#if TF_Enable_Book
|
||||
TFDiscoverNovelViewController *bookVC = [[TFDiscoverNovelViewController alloc] init];
|
||||
bookVC.productionType = TFProductionTypeNovel;
|
||||
[self addChildViewController:bookVC];
|
||||
#endif
|
||||
|
||||
#if TF_Enable_Audio
|
||||
TFDiscoverAudioViewController *audioVC = [[TFDiscoverAudioViewController alloc] init];
|
||||
audioVC.productionType = TFProductionTypeAudio;
|
||||
[self addChildViewController:audioVC];
|
||||
#endif
|
||||
|
||||
NSMutableArray *titleArr = [NSMutableArray array];
|
||||
NSMutableArray *childArr = [NSMutableArray array];
|
||||
|
||||
for (NSNumber *siteNumber in [TFUtilsHelper getSiteState]) {
|
||||
#if TF_Enable_Book
|
||||
if ([siteNumber integerValue] == 1) {
|
||||
[titleArr addObject:TFLocalizedString(@"小说")];
|
||||
[childArr addObject:bookVC];
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TF_Enable_Comic
|
||||
if ([siteNumber integerValue] == 2) {
|
||||
[titleArr addObject:TFLocalizedString(@"漫画")];
|
||||
[childArr addObject:comicVC];
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TF_Enable_Audio
|
||||
if ([siteNumber integerValue] == 3) {
|
||||
[titleArr addObject:TFLocalizedString(@"听书")];
|
||||
[childArr addObject:audioVC];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if ([TFUtilsHelper getSiteState].count == 1) {
|
||||
[titleArr removeAllObjects];
|
||||
[titleArr addObject:TFLocalizedString(@"发现")];
|
||||
}
|
||||
|
||||
self.pageContentCollectionView = [[SGPageContentCollectionView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) parentVC:self childVCs:childArr];
|
||||
_pageContentCollectionView.delegatePageContentCollectionView = self;
|
||||
[self.view addSubview:self.pageContentCollectionView];
|
||||
|
||||
self.pageConfigure.indicatorStyle = SGIndicatorStyleDynamic;
|
||||
self.pageConfigure.indicatorHeight = 3;
|
||||
self.pageConfigure.indicatorFixedWidth = 10;
|
||||
self.pageConfigure.indicatorToBottomDistance = 3;
|
||||
self.pageConfigure.titleSelectedColor = kBlackColor;
|
||||
self.pageConfigure.titleFont = kBoldFont16;
|
||||
self.pageConfigure.titleTextZoom = YES;
|
||||
self.pageConfigure.titleGradientEffect = YES;
|
||||
self.pageConfigure.titleTextZoomRatio = 0.2;
|
||||
self.pageConfigure.indicatorDynamicWidth = 14;
|
||||
self.pageConfigure.showIndicator = YES;
|
||||
|
||||
CGFloat width = 0;
|
||||
for (NSString *obj in titleArr) {
|
||||
CGFloat t_width = [TFViewHelper getDynamicWidthWithLabelFont:kBoldFont16 labelHeight:TFPageView_H labelText:obj maxWidth:140.0];
|
||||
width += t_width;
|
||||
width += kLabelHeight;
|
||||
}
|
||||
self.pageTitleView = [SGPageTitleView pageTitleViewWithFrame:CGRectMake(kHalfMargin, (is_iPhoneX?kQuarterMargin:kHalfMargin) + kHalfMargin + PUB_NAVBAR_OFFSET, width, TFPageView_H) delegate:self titleNames:titleArr configure:self.pageConfigure];
|
||||
self.pageTitleView.backgroundColor = [UIColor clearColor];
|
||||
[self.navigationBar addSubview:_pageTitleView];
|
||||
}
|
||||
|
||||
- (void)pageTitleView:(SGPageTitleView *)pageTitleView selectedIndex:(NSInteger)selectedIndex
|
||||
{
|
||||
[self.pageContentCollectionView setPageContentCollectionViewCurrentIndex:selectedIndex];
|
||||
}
|
||||
|
||||
- (void)pageContentCollectionView:(SGPageContentCollectionView *)pageContentCollectionView progress:(CGFloat)progress originalIndex:(NSInteger)originalIndex targetIndex:(NSInteger)targetIndex
|
||||
{
|
||||
[self.pageTitleView setPageTitleViewWithProgress:progress originalIndex:originalIndex targetIndex:targetIndex];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// TFDiscoverHeaderView.h
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef void(^BannerrImageClickBlock)(TFBannerModel *bannerModel);
|
||||
@interface TFDiscoverHeaderView : UIView
|
||||
|
||||
@property (nonatomic ,copy) BannerrImageClickBlock bannerrImageClickBlock; //banner点击
|
||||
|
||||
@property (nonatomic ,strong) NSArray <TFBannerModel *>*banner;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,106 @@
|
||||
//
|
||||
// TFDiscoverHeaderView.m
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TFDiscoverHeaderView.h"
|
||||
#import "YJBannerView.h"
|
||||
#import "TFDiscoverHeaderViewCell.h"
|
||||
|
||||
@interface TFDiscoverHeaderView ()<YJBannerViewDelegate, YJBannerViewDataSource>
|
||||
|
||||
@property (nonatomic ,strong) YJBannerView *normalBannerView;
|
||||
|
||||
@property (nonatomic ,strong) NSMutableArray *bannerImageArr;
|
||||
@end
|
||||
|
||||
@implementation TFDiscoverHeaderView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
self.clipsToBounds = YES;
|
||||
[self initialize];
|
||||
[self createSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)initialize
|
||||
{
|
||||
_bannerImageArr = [NSMutableArray array];
|
||||
}
|
||||
|
||||
- (void)createSubviews
|
||||
{
|
||||
self.backgroundColor = kWhiteColor;
|
||||
|
||||
[self addSubview:self.normalBannerView];
|
||||
}
|
||||
|
||||
//banner
|
||||
- (YJBannerView *)normalBannerView
|
||||
{
|
||||
if (!_normalBannerView) {
|
||||
_normalBannerView = [YJBannerView bannerViewWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH / 4) dataSource:self delegate:self emptyImage:HoldImage placeholderImage:HoldImage selectorString:NSStringFromSelector(@selector(setImageWithURL:placeholder:))];
|
||||
_normalBannerView.pageControlAliment = PageControlAlimentCenter;
|
||||
_normalBannerView.repeatCount = 9999;
|
||||
_normalBannerView.autoDuration = 5.0f;
|
||||
_normalBannerView.pageControlStyle = PageControlCustom;
|
||||
_normalBannerView.pageControlDotSize = CGSizeMake(10, 5);
|
||||
_normalBannerView.customPageControlHighlightImage = [UIImage imageNamed:@"pageControlS"];
|
||||
_normalBannerView.customPageControlNormalImage = [UIImage imageNamed:@"pageControlN"];
|
||||
}
|
||||
return _normalBannerView;
|
||||
}
|
||||
|
||||
- (NSArray *)bannerViewRegistCustomCellClass:(YJBannerView *)bannerView
|
||||
{
|
||||
return @[[TFDiscoverHeaderViewCell class]];
|
||||
}
|
||||
|
||||
/** 根据 Index 选择使用哪个 reuseIdentifier */
|
||||
- (Class)bannerView:(YJBannerView *)bannerView reuseIdentifierForIndex:(NSInteger)index
|
||||
{
|
||||
return [TFDiscoverHeaderViewCell class];
|
||||
}
|
||||
|
||||
/** 自定义 View 刷新数据或者其他配置 */
|
||||
- (UICollectionViewCell *)bannerView:(YJBannerView *)bannerView customCell:(UICollectionViewCell *)customCell index:(NSInteger)index
|
||||
{
|
||||
TFDiscoverHeaderViewCell *cell = (TFDiscoverHeaderViewCell *)customCell;
|
||||
cell.imageURL = [self.bannerImageArr objectOrNilAtIndex:index];
|
||||
return cell;
|
||||
}
|
||||
|
||||
// 将网络图片或者本地图片 或者混合数组
|
||||
- (NSArray *)bannerViewImages:(YJBannerView *)bannerView
|
||||
{
|
||||
return _bannerImageArr;
|
||||
}
|
||||
|
||||
// 代理方法 点击了哪个bannerView 的 第几个元素
|
||||
- (void)bannerView:(YJBannerView *)bannerView didSelectItemAtIndex:(NSInteger)index
|
||||
{
|
||||
if (self.bannerrImageClickBlock) {
|
||||
self.bannerrImageClickBlock([self.banner objectOrNilAtIndex:index]);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setBanner:(NSArray<TFBannerModel *> *)banner
|
||||
{
|
||||
_banner = banner;
|
||||
|
||||
[_bannerImageArr removeAllObjects];
|
||||
|
||||
for (TFBannerModel *t_model in banner) {
|
||||
[_bannerImageArr addObject:t_model.image];
|
||||
}
|
||||
|
||||
[_normalBannerView reloadData];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// TFDiscoverHeaderViewCell.h
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface TFDiscoverHeaderViewCell : UICollectionViewCell
|
||||
|
||||
@property (nonatomic ,copy) NSString *imageURL;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// TFDiscoverHeaderViewCell.m
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TFDiscoverHeaderViewCell.h"
|
||||
|
||||
@interface TFDiscoverHeaderViewCell ()
|
||||
{
|
||||
UIImageView *bannerImageView;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation TFDiscoverHeaderViewCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
self.backgroundColor = kWhiteColor;
|
||||
[self createSubViews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)createSubViews
|
||||
{
|
||||
bannerImageView = [[UIImageView alloc] initWithCornerRadiusAdvance:8 rectCornerType:UIRectCornerAllCorners];
|
||||
bannerImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
[self addSubview:bannerImageView];
|
||||
|
||||
[bannerImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.mas_left).with.offset(kHalfMargin);
|
||||
make.top.mas_equalTo(self.mas_top);
|
||||
make.width.mas_equalTo(self.mas_width).with.offset(- kMargin);
|
||||
make.height.mas_equalTo(self.mas_height);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)setImageURL:(NSString *)imageURL
|
||||
{
|
||||
_imageURL = imageURL;
|
||||
|
||||
[bannerImageView setImageWithURL:[NSURL URLWithString:imageURL] placeholder:HoldImage options:YYWebImageOptionSetImageWithFadeAnimation completion:nil];
|
||||
}
|
||||
@end
|
||||
Reference in New Issue
Block a user