YMMemberPrivilegeItemView.m 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. //
  2. // YMMemberPrivilegeItemView.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/27.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMMemberPrivilegeItemView.h"
  9. #import "YMMemberCenterViewModel.h"
  10. #import "YMMemberPrivilegeItemCell.h"
  11. @interface YMMemberPrivilegeItemView ()<UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
  12. /// 会员中心VM
  13. @property (nonatomic, strong) YMMemberCenterViewModel *viewModel;
  14. /// 特权项目标题标签
  15. @property (nonatomic, strong) UILabel *privilegeItemTitleLb;
  16. @property (nonatomic, strong) UIImageView *lImgv;
  17. @property (nonatomic, strong) UIImageView *rImgv;
  18. @property (nonatomic, strong) UIImageView *bImgv;
  19. /// 特权项目排版
  20. @property (nonatomic, strong) UICollectionViewFlowLayout *privilegeItemLayout;
  21. /// 特权项目容器列表
  22. @property (nonatomic, strong) UICollectionView *privilegeItemCollectionView;
  23. @end
  24. @implementation YMMemberPrivilegeItemView
  25. - (void)ym_setupViews{
  26. [self addSubview:self.lImgv];
  27. [self addSubview:self.rImgv];
  28. [self addSubview:self.bImgv];
  29. [self addSubview:self.privilegeItemTitleLb];
  30. [self addSubview:self.privilegeItemCollectionView];
  31. [self setNeedsUpdateConstraints];
  32. [self updateConstraintsIfNeeded];
  33. }
  34. - (void)updateConstraints{
  35. [self.privilegeItemTitleLb mas_makeConstraints:^(MASConstraintMaker *make) {
  36. make.top.equalTo(self);
  37. make.left.equalTo(self).offset(adapt(22));
  38. }];
  39. // [self.lImgv mas_makeConstraints:^(MASConstraintMaker *make) {
  40. // make.centerY.equalTo(self.privilegeItemTitleLb);
  41. // make.right.equalTo(self.privilegeItemTitleLb.mas_left).offset(adapt(-6));
  42. // }];
  43. // [self.rImgv mas_makeConstraints:^(MASConstraintMaker *make) {
  44. // make.centerY.equalTo(self.privilegeItemTitleLb);
  45. // make.left.equalTo(self.privilegeItemTitleLb.mas_right).offset(adapt(6));
  46. // }];
  47. // [self.bImgv mas_makeConstraints:^(MASConstraintMaker *make) {
  48. // make.centerX.equalTo(self.privilegeItemTitleLb);
  49. // make.top.equalTo(self.privilegeItemTitleLb.mas_bottom).offset(adapt(6));
  50. // }];
  51. [self.privilegeItemCollectionView mas_makeConstraints:^(MASConstraintMaker *make) {
  52. make.top.equalTo(self.privilegeItemTitleLb.mas_bottom).offset(adapt(20));
  53. make.left.equalTo(self);
  54. make.right.equalTo(self);
  55. make.height.mas_equalTo(adapt(140) * 4.5);
  56. }];
  57. [super updateConstraints];
  58. }
  59. - (void)ym_bindViewModel:(YMMemberCenterViewModel *)viewModel{
  60. if (!viewModel) {
  61. return;
  62. }
  63. _viewModel = viewModel;
  64. @weakify(self)
  65. [[self.viewModel.refreshUISubject takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id result) {
  66. @strongify(self)
  67. [self.privilegeItemCollectionView reloadData];
  68. [self.privilegeItemCollectionView layoutIfNeeded];
  69. //刷新高度
  70. // CGFloat privilegeItemCollectionViewHeight = self.privilegeItemCollectionView.collectionViewLayout.collectionViewContentSize.height;
  71. // [self.privilegeItemCollectionView mas_updateConstraints:^(MASConstraintMaker *make) {
  72. // make.height.mas_equalTo(privilegeItemCollectionViewHeight);
  73. // }];
  74. }];
  75. }
  76. #pragma mark - UICollectionViewDataSource
  77. - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
  78. return 1;
  79. }
  80. - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
  81. return self.viewModel.privilegeItemDataArray.count;
  82. }
  83. - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
  84. YMMemberPrivilegeItemCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YMMemberPrivilegeItemCell class]) forIndexPath:indexPath];
  85. [cell ym_bindViewModel:self.viewModel.privilegeItemDataArray[indexPath.item]];
  86. return cell;
  87. }
  88. - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
  89. UICollectionReusableView *reusableView = nil;
  90. reusableView.backgroundColor = [UIColor clearColor];
  91. return reusableView;
  92. }
  93. - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
  94. return CGSizeZero;
  95. }
  96. - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section{
  97. return CGSizeZero;
  98. }
  99. #pragma mark - UICollectionViewDelegate
  100. - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
  101. }
  102. #pragma mark - CHTCollectionViewDelegateWaterfallLayout
  103. - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
  104. return CGSizeMake(adapt(100), adapt(127));
  105. }
  106. - (UIImageView *)lImgv {
  107. if (!_lImgv) {
  108. _lImgv = [[UIImageView alloc] init];
  109. _lImgv.hidden = YES;
  110. _lImgv.image = ImageByName(@"ym_member_center_vip_left");
  111. }
  112. return _lImgv;
  113. }
  114. - (UIImageView *)rImgv {
  115. if (!_rImgv) {
  116. _rImgv = [[UIImageView alloc] init];
  117. _rImgv.hidden = YES;
  118. _rImgv.image = ImageByName(@"ym_member_center_vip_right");
  119. }
  120. return _rImgv;
  121. }
  122. - (UIImageView *)bImgv {
  123. if (!_bImgv) {
  124. _bImgv = [[UIImageView alloc] init];
  125. _bImgv.hidden = YES;
  126. _bImgv.image = ImageByName(@"ym_member_center_vip_bottom");
  127. }
  128. return _bImgv;
  129. }
  130. - (UILabel *)privilegeItemTitleLb{
  131. if (!_privilegeItemTitleLb) {
  132. _privilegeItemTitleLb = [[UILabel alloc]init];
  133. _privilegeItemTitleLb.font = LCBoldFont(16);
  134. _privilegeItemTitleLb.textColor = HexColorFromRGB(0x333333);
  135. _privilegeItemTitleLb.textAlignment = NSTextAlignmentLeft;
  136. _privilegeItemTitleLb.text = @"VIP权益";
  137. }
  138. return _privilegeItemTitleLb;
  139. }
  140. - (UICollectionViewFlowLayout *)privilegeItemLayout{
  141. if (!_privilegeItemLayout) {
  142. _privilegeItemLayout = [[UICollectionViewFlowLayout alloc] init];
  143. _privilegeItemLayout.scrollDirection = UICollectionViewScrollDirectionVertical;
  144. _privilegeItemLayout.minimumLineSpacing = adapt(10);
  145. _privilegeItemLayout.minimumInteritemSpacing = adapt(10);
  146. }
  147. return _privilegeItemLayout;
  148. }
  149. - (UICollectionView *)privilegeItemCollectionView{
  150. if (!_privilegeItemCollectionView) {
  151. _privilegeItemCollectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:self.privilegeItemLayout];
  152. _privilegeItemCollectionView.delegate = self;
  153. _privilegeItemCollectionView.dataSource = self;
  154. _privilegeItemCollectionView.showsVerticalScrollIndicator = NO;
  155. _privilegeItemCollectionView.showsHorizontalScrollIndicator = YES;
  156. _privilegeItemCollectionView.backgroundColor = UIColor.clearColor;
  157. _privilegeItemCollectionView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
  158. [_privilegeItemCollectionView registerClass:[YMMemberPrivilegeItemCell class] forCellWithReuseIdentifier:NSStringFromClass([YMMemberPrivilegeItemCell class])];
  159. }
  160. return _privilegeItemCollectionView;
  161. }
  162. @end