HomeHeaderView.m 5.4 KB
//
//  HomeHeaderView.m
//  DreamSleep
//
//  Created by peter on 2022/4/8.
//

#import "HomeHeaderView.h"
#import "BannerModel.h"
#import "CWCarousel.h"
#import "CWPageControl.h"
#import "HeaderDataModel.h"
#import "DsMiddleView.h"
#import "ThreeMinuteController.h"
#import "PrivacyViewController.h"

@interface HomeHeaderView () <CWCarouselDatasource, CWCarouselDelegate>
// 轮播图
@property (nonatomic, strong) CWCarousel *barnnerView;
@property (nonatomic, strong) NSArray *bannerDatas;
@property (nonatomic, strong) DsMiddleView *dsMiddleView;
@end

@implementation HomeHeaderView

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.bannerDatas = [NSArray array];
        [self addSubview:self.barnnerView];
        [self addSubview:self.dsMiddleView];
    }
    return self;
}

- (void)layoutSubviews {
    [super layoutSubviews];
    
    [self.barnnerView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self).offset(15);
        make.width.mas_equalTo(self);
        make.height.mas_equalTo(2*(kScreenWidth - 48)/5);
    }];
    [self.dsMiddleView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.topMargin.equalTo(self.barnnerView.mas_bottom).offset(24);
        make.width.mas_equalTo(self);
    }];
}

#pragma mark - public
- (void)updateBannerWithListData:(NSArray *)listData {
    self.bannerDatas = listData;
    [self.barnnerView freshCarousel];
}

#pragma mark - CWCarouselDatasource
- (NSInteger)numbersForCarousel {
    return self.bannerDatas.count;
}

#define TmpTag 666
- (UICollectionViewCell *)viewForCarousel:(CWCarousel *)carousel indexPath:(NSIndexPath *)indexPath index:(NSInteger)index {
    UICollectionViewCell *cell = [carousel.carouselView dequeueReusableCellWithReuseIdentifier:@"barnnerCellID" forIndexPath:indexPath];
    UIImageView *imgView = [cell.contentView viewWithTag:TmpTag];
    if (!imgView) {
        imgView = [[UIImageView alloc] initWithFrame:cell.contentView.bounds];
        imgView.tag = TmpTag;
        imgView.contentMode = UIViewContentModeScaleAspectFit;
        [cell.contentView addSubview:imgView];
    }
    [imgView cornerRadius:16.0];
    imgView.dk_alphaPicker = DKAlphaPickerWithAlphas(1.0, .5, 1.0);
    BannerModel *model = self.bannerDatas[index];
    [imgView yy_setImageWithURL:[NSURL URLWithString:model.banner_url] placeholder:[UIImage imageNamed:@"bannerPlaceholder"]];
    
    return cell;
}

#pragma mark - CWCarouselDelegate
- (void)CWCarousel:(CWCarousel *)carousel didSelectedAtIndex:(NSInteger)index {
    // 判断是否登录成功
    if ([LoginUtils getUserLoginData]) {
        BannerModel *model = self.bannerDatas[index];
        switch (model.banner_id) {
            case 13: { // 进入失眠拯救计划页面
                [self.ds_viewController.navigationController pushViewController:[[PrivacyViewController alloc] initWithTitle:@"失眠拯救计划" link:[NSURL URLWithString:model.info_url] isDetail:YES] animated:YES];
            }
                break;
            case 11: { // 切换到AI睡眠教练标签
                self.ds_viewController.tabBarController.selectedIndex = 1;
            }
                break;
            case 10: { // 进入三分钟即刻入睡页面
                ThreeMinuteController *threeVC = [[ThreeMinuteController alloc] init];
                [self.ds_viewController.navigationController pushViewController:threeVC animated:YES];
            }
                break;
            case 8: { // 进入睡眠评测页面
                [self.ds_viewController.navigationController pushViewController:[[PrivacyViewController alloc] initWithTitle:@"睡眠评测" link:[NSURL URLWithString:model.info_url] isDetail:YES] animated:YES];
            }
                break;
            default:
                break;
        }
    } else {
        // 跳转到登录页面
        [LoginUtils jumpToLoginControllerWithTarget:self.ds_viewController];
    }
}

#pragma mark - lazy
- (CWCarousel *)barnnerView {
    if (!_barnnerView) {
        // 自定义布局
        CWFlowLayout *flowLayout = [[CWFlowLayout alloc] initWithStyle:CWCarouselStyle_H_2];
        flowLayout.itemWidth = kScreenWidth - 48;
        flowLayout.itemSpace_H = 12;
        
        // 自定义pagecontrol
        CGFloat width = [CWPageControl widthFromNumber:self.bannerDatas.count];
        CWPageControl *pageC = [[CWPageControl alloc] initWithFrame:CGRectMake(0, 0, width, 20)];
        pageC.translatesAutoresizingMaskIntoConstraints = NO;
        [[pageC.widthAnchor constraintEqualToConstant:width] setActive:YES];
        
        _barnnerView = [[CWCarousel alloc] initWithFrame:CGRectZero
                                                delegate:self
                                              datasource:self
                                              flowLayout:flowLayout];
        _barnnerView.translatesAutoresizingMaskIntoConstraints = NO;
        _barnnerView.isAuto = YES;
        _barnnerView.endless = YES;
        _barnnerView.autoTimInterval = 3;
        _barnnerView.backgroundColor = self.backgroundColor;
        _barnnerView.customPageControl = pageC;
        [_barnnerView registerViewClass:[UICollectionViewCell class] identifier:@"barnnerCellID"];
    }
    return _barnnerView;
}

- (DsMiddleView *)dsMiddleView {
    if (!_dsMiddleView) {
        _dsMiddleView = [[DsMiddleView alloc] init];
        _dsMiddleView.backgroundColor = self.backgroundColor;
    }
    return _dsMiddleView;
}

@end