You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
6.4 KiB
186 lines
6.4 KiB
// |
|
// 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
|
|
|