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

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

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

@implementation HomeHeaderView

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.imgs = [HeaderDataModel getCarouselImages];
        [self addSubview:self.barnnerView];
        dispatch_after(1, dispatch_get_main_queue(), ^{
            [self.barnnerView freshCarousel];
        });
        
        [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);
    }];
}

- (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.imgs.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;
}

#pragma mark - CWCarouselDatasource
- (NSInteger)numbersForCarousel {
    return self.imgs.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 setImage:[UIImage imageNamed:self.imgs[index]]];
    // 通过alpha来控制夜间模式
    // imgView.alpha = .5;
    return cell;
}

#pragma mark - CWCarouselDelegate
- (void)CWCarousel:(CWCarousel *)carousel didSelectedAtIndex:(NSInteger)index {
    DSLog(@"did selected at index %ld", index);
    // 判断是否登录
    
    // 登录成功跳转对应页面
    switch (index) {
        case 0:
            break;
        case 1: { // 进入三分钟即刻入睡页面
            ThreeMinuteController *threeVC = [[ThreeMinuteController alloc] init];
            [self.ds_viewController.navigationController pushViewController:threeVC animated:YES];
        }
            break;
        case 2: { // 切换到AI睡眠教练标签
            self.ds_viewController.tabBarController.selectedIndex = 1;
        }
            break;
        case 3:
            break;
        default:
            break;
    }
}

@end