// // YMMemberPrivilegeItemView.m // MSYOUPAI // // Created by YoMi on 2024/2/27. // Copyright © 2024 MS. All rights reserved. // #import "YMMemberPrivilegeItemView.h" #import "YMMemberCenterViewModel.h" #import "YMMemberPrivilegeItemCell.h" @interface YMMemberPrivilegeItemView () /// 会员中心VM @property (nonatomic, strong) YMMemberCenterViewModel *viewModel; /// 特权项目标题标签 @property (nonatomic, strong) UILabel *privilegeItemTitleLb; @property (nonatomic, strong) UIImageView *lImgv; @property (nonatomic, strong) UIImageView *rImgv; @property (nonatomic, strong) UIImageView *bImgv; /// 特权项目排版 @property (nonatomic, strong) UICollectionViewFlowLayout *privilegeItemLayout; /// 特权项目容器列表 @property (nonatomic, strong) UICollectionView *privilegeItemCollectionView; @end @implementation YMMemberPrivilegeItemView - (void)ym_setupViews{ [self addSubview:self.lImgv]; [self addSubview:self.rImgv]; [self addSubview:self.bImgv]; [self addSubview:self.privilegeItemTitleLb]; [self addSubview:self.privilegeItemCollectionView]; [self setNeedsUpdateConstraints]; [self updateConstraintsIfNeeded]; } - (void)updateConstraints{ [self.privilegeItemTitleLb mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self); make.left.equalTo(self).offset(adapt(22)); }]; // [self.lImgv mas_makeConstraints:^(MASConstraintMaker *make) { // make.centerY.equalTo(self.privilegeItemTitleLb); // make.right.equalTo(self.privilegeItemTitleLb.mas_left).offset(adapt(-6)); // }]; // [self.rImgv mas_makeConstraints:^(MASConstraintMaker *make) { // make.centerY.equalTo(self.privilegeItemTitleLb); // make.left.equalTo(self.privilegeItemTitleLb.mas_right).offset(adapt(6)); // }]; // [self.bImgv mas_makeConstraints:^(MASConstraintMaker *make) { // make.centerX.equalTo(self.privilegeItemTitleLb); // make.top.equalTo(self.privilegeItemTitleLb.mas_bottom).offset(adapt(6)); // }]; [self.privilegeItemCollectionView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.privilegeItemTitleLb.mas_bottom).offset(adapt(20)); make.left.equalTo(self); make.right.equalTo(self); make.height.mas_equalTo(adapt(140) * 4.5); }]; [super updateConstraints]; } - (void)ym_bindViewModel:(YMMemberCenterViewModel *)viewModel{ if (!viewModel) { return; } _viewModel = viewModel; @weakify(self) [[self.viewModel.refreshUISubject takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id result) { @strongify(self) [self.privilegeItemCollectionView reloadData]; [self.privilegeItemCollectionView layoutIfNeeded]; //刷新高度 // CGFloat privilegeItemCollectionViewHeight = self.privilegeItemCollectionView.collectionViewLayout.collectionViewContentSize.height; // [self.privilegeItemCollectionView mas_updateConstraints:^(MASConstraintMaker *make) { // make.height.mas_equalTo(privilegeItemCollectionViewHeight); // }]; }]; } #pragma mark - UICollectionViewDataSource - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return self.viewModel.privilegeItemDataArray.count; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { YMMemberPrivilegeItemCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YMMemberPrivilegeItemCell class]) forIndexPath:indexPath]; [cell ym_bindViewModel:self.viewModel.privilegeItemDataArray[indexPath.item]]; return cell; } - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{ UICollectionReusableView *reusableView = nil; reusableView.backgroundColor = [UIColor clearColor]; return reusableView; } - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{ return CGSizeZero; } - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section{ return CGSizeZero; } #pragma mark - UICollectionViewDelegate - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ } #pragma mark - CHTCollectionViewDelegateWaterfallLayout - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(adapt(100), adapt(127)); } - (UIImageView *)lImgv { if (!_lImgv) { _lImgv = [[UIImageView alloc] init]; _lImgv.hidden = YES; _lImgv.image = ImageByName(@"ym_member_center_vip_left"); } return _lImgv; } - (UIImageView *)rImgv { if (!_rImgv) { _rImgv = [[UIImageView alloc] init]; _rImgv.hidden = YES; _rImgv.image = ImageByName(@"ym_member_center_vip_right"); } return _rImgv; } - (UIImageView *)bImgv { if (!_bImgv) { _bImgv = [[UIImageView alloc] init]; _bImgv.hidden = YES; _bImgv.image = ImageByName(@"ym_member_center_vip_bottom"); } return _bImgv; } - (UILabel *)privilegeItemTitleLb{ if (!_privilegeItemTitleLb) { _privilegeItemTitleLb = [[UILabel alloc]init]; _privilegeItemTitleLb.font = LCBoldFont(16); _privilegeItemTitleLb.textColor = HexColorFromRGB(0x333333); _privilegeItemTitleLb.textAlignment = NSTextAlignmentLeft; _privilegeItemTitleLb.text = @"VIP权益"; } return _privilegeItemTitleLb; } - (UICollectionViewFlowLayout *)privilegeItemLayout{ if (!_privilegeItemLayout) { _privilegeItemLayout = [[UICollectionViewFlowLayout alloc] init]; _privilegeItemLayout.scrollDirection = UICollectionViewScrollDirectionVertical; _privilegeItemLayout.minimumLineSpacing = adapt(10); _privilegeItemLayout.minimumInteritemSpacing = adapt(10); } return _privilegeItemLayout; } - (UICollectionView *)privilegeItemCollectionView{ if (!_privilegeItemCollectionView) { _privilegeItemCollectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:self.privilegeItemLayout]; _privilegeItemCollectionView.delegate = self; _privilegeItemCollectionView.dataSource = self; _privilegeItemCollectionView.showsVerticalScrollIndicator = NO; _privilegeItemCollectionView.showsHorizontalScrollIndicator = YES; _privilegeItemCollectionView.backgroundColor = UIColor.clearColor; _privilegeItemCollectionView.indicatorStyle = UIScrollViewIndicatorStyleWhite; [_privilegeItemCollectionView registerClass:[YMMemberPrivilegeItemCell class] forCellWithReuseIdentifier:NSStringFromClass([YMMemberPrivilegeItemCell class])]; } return _privilegeItemCollectionView; } @end