小说绘上架版本
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// TFBookStoreMenuView.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 NS_ENUM(NSUInteger, TFMenuButtonType) {
|
||||
TFMenuButtonTypeFree, // 免费
|
||||
TFMenuButtonTypeComplete, // 完结
|
||||
TFMenuButtonTypeSort, // 分类
|
||||
TFMenuButtonTypePopularity, // 排行
|
||||
TFMenuButtonTypeMember // 会员
|
||||
};
|
||||
|
||||
typedef void(^BannerrImageClickBlock)(TFBannerModel *bannerModel);
|
||||
|
||||
@interface TFBookStoreMenuView : UIView
|
||||
|
||||
@property (nonatomic ,assign) TFProductionType productionType;
|
||||
@property (nonatomic ,strong) TFBookStoreModel *mallCenterModel;
|
||||
|
||||
@property (nonatomic ,copy) void (^menuButtonClickBlock)(TFMenuButtonType menuButtonType, NSString *menuButtonTitle);
|
||||
|
||||
@property (nonatomic ,copy) void(^bannerrImageClickBlock)(TFBannerModel *bannerModel); // banner点击
|
||||
|
||||
- (void)createSubViews;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,186 @@
|
||||
//
|
||||
// TFBookStoreMenuView.m
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/2.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TFBookStoreMenuView.h"
|
||||
#import "YJMallCollectionViewCell.h"
|
||||
#import "YJBannerView.h"
|
||||
#import "TFUserCenterModel.h"
|
||||
|
||||
@interface TFBookStoreMenuView () <YJBannerViewDelegate, YJBannerViewDataSource>
|
||||
|
||||
@property (nonatomic ,strong) YJBannerView *bannerView;
|
||||
@property (nonatomic ,strong) UIView *menuBarView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation TFBookStoreMenuView
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
if (self = [super init]) {
|
||||
|
||||
CGFloat headerHeight = SCREEN_WIDTH - kHalfMargin;
|
||||
|
||||
if (is_iPhone6P) {
|
||||
headerHeight = SCREEN_WIDTH - kMargin - kQuarterMargin;
|
||||
} else if (is_iPhoneX) {
|
||||
headerHeight = SCREEN_WIDTH;
|
||||
} else if (is_iPhone6) {
|
||||
headerHeight = SCREEN_WIDTH - kMargin;
|
||||
}
|
||||
|
||||
self.frame = CGRectMake(0, 0, SCREEN_WIDTH, headerHeight);
|
||||
self.clipsToBounds = YES;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)setProductionType:(TFProductionType)productionType
|
||||
{
|
||||
_productionType = productionType;
|
||||
|
||||
[self createSubViews];
|
||||
}
|
||||
|
||||
- (void)createSubViews
|
||||
{
|
||||
self.backgroundColor = kWhiteColor;
|
||||
|
||||
[self addSubview:self.bannerView];
|
||||
|
||||
UIImageView *bannerBottonView = [[UIImageView alloc] init];
|
||||
bannerBottonView.image = [UIImage imageNamed:@"banner_bottom_line.png"];
|
||||
[self addSubview:bannerBottonView];
|
||||
|
||||
[bannerBottonView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(0);
|
||||
make.bottom.mas_equalTo(self.bannerView.mas_bottom).with.offset(1);
|
||||
make.width.mas_equalTo(SCREEN_WIDTH);
|
||||
make.height.mas_equalTo(kGeometricHeight(SCREEN_WIDTH, 800, 57));
|
||||
}];
|
||||
|
||||
self.menuBarView = [[UIView alloc] init];
|
||||
self.menuBarView.backgroundColor = kWhiteColor;
|
||||
[self addSubview:self.menuBarView];
|
||||
|
||||
[self.menuBarView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(0);
|
||||
make.bottom.mas_equalTo(self.mas_bottom);
|
||||
make.width.mas_equalTo(SCREEN_WIDTH);
|
||||
make.height.mas_equalTo(SCREEN_WIDTH / 5 - kQuarterMargin);
|
||||
}];
|
||||
}
|
||||
|
||||
- (YJBannerView *)bannerView
|
||||
{
|
||||
if (!_bannerView) {
|
||||
_bannerView = [YJBannerView bannerViewWithFrame:CGRectMake(0, 0, self.width, self.height - (SCREEN_WIDTH / 5)) dataSource:self delegate:self emptyImage:HoldImage placeholderImage:HoldImage selectorString:NSStringFromSelector(@selector(setImageWithURL:placeholder:))];
|
||||
_bannerView.repeatCount = 9999;
|
||||
_bannerView.pageControlAliment = PageControlAlimentCenter;
|
||||
_bannerView.autoDuration = 5.0f;
|
||||
_bannerView.pageControlStyle = PageControlCustom;
|
||||
_bannerView.pageControlDotSize = CGSizeMake(10, 5);
|
||||
_bannerView.pageControlBottomMargin = 15;
|
||||
_bannerView.customPageControlHighlightImage = [UIImage imageNamed:@"pageControlS"];
|
||||
_bannerView.customPageControlNormalImage = [UIImage imageNamed:@"pageControlN"];
|
||||
}
|
||||
return _bannerView;
|
||||
}
|
||||
|
||||
- (NSArray *)bannerViewImages:(YJBannerView *)bannerView
|
||||
{
|
||||
NSMutableArray *t_arr = [NSMutableArray array];
|
||||
for (TFBannerModel *t_model in self.mallCenterModel.banner) {
|
||||
[t_arr addObject:t_model.image];
|
||||
}
|
||||
return t_arr;
|
||||
}
|
||||
|
||||
// 代理方法 点击了哪个bannerView 的 第几个元素
|
||||
- (void)bannerView:(YJBannerView *)bannerView didSelectItemAtIndex:(NSInteger)index
|
||||
{
|
||||
if (self.bannerrImageClickBlock) {
|
||||
self.bannerrImageClickBlock([self.mallCenterModel.banner objectOrNilAtIndex:index]);
|
||||
}
|
||||
}
|
||||
|
||||
- (NSArray *)bannerViewRegistCustomCellClass:(YJBannerView *)bannerView
|
||||
{
|
||||
return @[[YJMallCollectionViewCell class]];
|
||||
}
|
||||
|
||||
/** 根据 Index 选择使用哪个 reuseIdentifier */
|
||||
- (Class)bannerView:(YJBannerView *)bannerView reuseIdentifierForIndex:(NSInteger)index
|
||||
{
|
||||
return [YJMallCollectionViewCell class];
|
||||
}
|
||||
|
||||
/** 自定义 View 刷新数据或者其他配置 */
|
||||
- (UICollectionViewCell *)bannerView:(YJBannerView *)bannerView customCell:(UICollectionViewCell *)customCell index:(NSInteger)index
|
||||
{
|
||||
YJMallCollectionViewCell *cell = (YJMallCollectionViewCell *)customCell;
|
||||
cell.bannerModel = [self.mallCenterModel.banner objectOrNilAtIndex:index];
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (void)setMallCenterModel:(TFBookStoreModel *)mallCenterModel
|
||||
{
|
||||
_mallCenterModel = mallCenterModel;
|
||||
|
||||
[self.menuBarView removeAllSubviews];
|
||||
[self.bannerView reloadData];
|
||||
|
||||
for (int i = 0; i < mallCenterModel.menus_tabs.count; i ++) {
|
||||
|
||||
TFBookStoreMenusModel *t_model = [mallCenterModel.menus_tabs objectAtIndex:i];
|
||||
|
||||
TFButton *button = [[TFButton alloc] initWithFrame:CGRectZero buttonTitle:t_model.title ? : @"" buttonImageName:t_model.icon ? : @"" buttonIndicator:TFButtonIndicatorTitleBottom showMaskView:YES];
|
||||
button.graphicDistance = 0;
|
||||
button.buttonImageScale = 0.6;
|
||||
button.buttonTitleFont = kFont13;
|
||||
button.buttonTag = t_model.action;
|
||||
[button addTarget:self action:@selector(menuButtonClick:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[self.menuBarView addSubview:button];
|
||||
|
||||
CGFloat buttonWidth = SCREEN_WIDTH / mallCenterModel.menus_tabs.count;
|
||||
CGFloat buttonHeight = SCREEN_WIDTH / 5 - kQuarterMargin;
|
||||
|
||||
[button mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(i * buttonWidth);
|
||||
make.top.mas_equalTo(0);
|
||||
make.width.mas_equalTo(buttonWidth);
|
||||
make.height.mas_equalTo(buttonHeight);
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)menuButtonClick:(TFButton *)sender
|
||||
{
|
||||
if (self.menuButtonClickBlock) {
|
||||
if ([sender.buttonTag isEqualToString:@"free"]) {
|
||||
self.menuButtonClickBlock(TFMenuButtonTypeFree, sender.buttonTitle ? : @"");
|
||||
}
|
||||
|
||||
if ([sender.buttonTag isEqualToString:@"finished"]) {
|
||||
self.menuButtonClickBlock(TFMenuButtonTypeComplete, sender.buttonTitle ? : @"");
|
||||
}
|
||||
|
||||
if ([sender.buttonTag isEqualToString:@"category"]) {
|
||||
self.menuButtonClickBlock(TFMenuButtonTypeSort, sender.buttonTitle ? : @"");
|
||||
}
|
||||
|
||||
if ([sender.buttonTag isEqualToString:@"rank"]) {
|
||||
self.menuButtonClickBlock(TFMenuButtonTypePopularity, sender.buttonTitle ? : @"");
|
||||
}
|
||||
|
||||
if ([sender.buttonTag isEqualToString:@"vip"]) {
|
||||
self.menuButtonClickBlock(TFMenuButtonTypeMember, sender.buttonTitle ? : @"");
|
||||
}
|
||||
}
|
||||
}
|
||||
@end
|
||||
Reference in New Issue
Block a user