YMMemberRenewalItemCell.m 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. //
  2. // YMMemberRenewalItemCell.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/27.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMMemberRenewalItemCell.h"
  9. #import "YMMemberRenewalItemCellViewModel.h"
  10. @interface YMMemberRenewalItemCell()
  11. /// ViewModel
  12. @property (nonatomic, strong) YMMemberRenewalItemCellViewModel *viewModel;
  13. /// 基础视图
  14. @property (nonatomic, strong) UIView *baseView;
  15. /// 渐变视图
  16. @property (nonatomic, strong) UIImageView *gradientView;
  17. /// 图标
  18. @property (nonatomic, strong) UIImageView *itemIcon;
  19. /// 续费项目名称标签
  20. @property (nonatomic, strong) UILabel *renewalItemNameLb;
  21. /// 续费项目钱符号标签
  22. @property (nonatomic, strong) UILabel *renewalItemMoneySymbolLb;
  23. /// 续费项目金额标签
  24. @property (nonatomic, strong) UILabel *renewalItemAmountLb;
  25. /// 续费项目原价标签
  26. @property (nonatomic, strong) UILabel *renewalItemOriginalPriceLb;
  27. /// 节省金额标签
  28. @property (nonatomic, strong) UILabel *amountSavingsPriceLb;
  29. /// 选中标签
  30. @property (nonatomic, strong) UIImageView *selectedImgv;
  31. @end
  32. @implementation YMMemberRenewalItemCell
  33. - (void)setSelected:(BOOL)selected{
  34. [super setSelected:selected];
  35. //self.gradientView.image = selected ? ImageByName(@"ym_member_center_renew_item_bg_selected") : ImageByName(@"ym_member_center_renew_item_bg_normal");
  36. NSArray *colors;
  37. if (selected) {
  38. colors = @[HexColorFromRGB(0xFFFFFF), HexColorFromRGB(0xFFFFFF)];
  39. } else {
  40. colors = @[HexColorFromRGB(0xFFFFFF), HexColorFromRGB(0xFFE7D8)];
  41. }
  42. NSArray *location = @[@(0), @(1)];
  43. [_gradientView ym_setGradientBackgroundWithColors:colors locations:location startPoint:CGPointMake(0, 0) endPoint:CGPointMake(0, 1)];
  44. //self.baseView.backgroundColor = selected ? UIColorFromRGB(0xFFFFFF) : HexColorFromRGB(0xF2F5FF);
  45. self.baseView.layer.borderWidth = selected ? 2 : 0;
  46. }
  47. - (void)ym_setupViews{
  48. self.contentView.backgroundColor = UIColor.clearColor;
  49. self.backgroundColor = UIColor.clearColor;
  50. [self.contentView addSubview:self.baseView];
  51. [self.baseView addSubview:self.gradientView];
  52. [self.baseView addSubview:self.itemIcon];
  53. [self.baseView addSubview:self.renewalItemNameLb];
  54. [self.baseView addSubview:self.renewalItemMoneySymbolLb];
  55. [self.baseView addSubview:self.renewalItemAmountLb];
  56. [self.baseView addSubview:self.renewalItemOriginalPriceLb];
  57. [self.baseView addSubview:self.amountSavingsPriceLb];
  58. [self.baseView addSubview:self.selectedImgv];
  59. [self setNeedsUpdateConstraints];
  60. [self updateConstraintsIfNeeded];
  61. }
  62. - (void)updateConstraints {
  63. [self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
  64. make.top.equalTo(self.contentView);
  65. make.left.equalTo(self.contentView);
  66. make.right.equalTo(self.contentView);
  67. make.bottom.equalTo(self.contentView);
  68. }];
  69. [self.gradientView mas_makeConstraints:^(MASConstraintMaker *make) {
  70. make.top.equalTo(self.baseView);
  71. make.left.equalTo(self.baseView);
  72. make.right.equalTo(self.baseView);
  73. make.bottom.equalTo(self.baseView);
  74. }];
  75. [self.renewalItemNameLb mas_makeConstraints:^(MASConstraintMaker *make) {
  76. make.top.equalTo(self.baseView).offset(adapt(20));
  77. make.centerX.equalTo(self.baseView).offset(adapt(11));
  78. }];
  79. [self.itemIcon mas_makeConstraints:^(MASConstraintMaker *make) {
  80. make.centerY.equalTo(self.renewalItemNameLb);
  81. make.right.equalTo(self.renewalItemNameLb.mas_left).offset(adapt(-5));
  82. make.width.height.mas_equalTo(adapt(16));
  83. }];
  84. [self.renewalItemAmountLb mas_makeConstraints:^(MASConstraintMaker *make) {
  85. make.centerX.equalTo(self.baseView.mas_centerX);
  86. make.top.equalTo(self.renewalItemNameLb.mas_bottom).offset(adapt(5));
  87. }];
  88. [self.renewalItemOriginalPriceLb mas_makeConstraints:^(MASConstraintMaker *make) {
  89. make.centerX.equalTo(self.baseView.mas_centerX);
  90. make.top.equalTo(self.renewalItemAmountLb.mas_bottom).offset(adapt(4));
  91. }];
  92. [self.amountSavingsPriceLb mas_makeConstraints:^(MASConstraintMaker *make) {
  93. make.top.equalTo(self.renewalItemOriginalPriceLb.mas_bottom).offset(adapt(4));
  94. make.centerX.equalTo(self.baseView);
  95. }];
  96. [self.selectedImgv mas_makeConstraints:^(MASConstraintMaker *make) {
  97. make.right.bottom.equalTo(self.baseView);
  98. make.width.height.mas_equalTo(adapt(22));
  99. }];
  100. [super updateConstraints];
  101. }
  102. - (void)ym_bindViewModel:(YMMemberRenewalItemCellViewModel*)viewModel{
  103. if (!viewModel) {
  104. return;
  105. }
  106. _viewModel = viewModel;
  107. self.renewalItemNameLb.text = self.viewModel.renewalItemName;
  108. NSString *renewalItemAmountStr = stringFormat(@"¥%.01f", (CGFloat)(self.viewModel.renewalItemAmount));
  109. NSMutableAttributedString *renewalItemAmountAttributed = [[NSMutableAttributedString alloc]initWithString:renewalItemAmountStr];
  110. renewalItemAmountAttributed.yy_font = LCBoldFont(28);
  111. renewalItemAmountAttributed.yy_color = rgba(140, 54, 37, 1);
  112. renewalItemAmountAttributed.yy_alignment = NSTextAlignmentCenter;
  113. [renewalItemAmountAttributed yy_setFont:LCBoldFont(16) range:[renewalItemAmountStr rangeOfString:@"¥"]];
  114. self.renewalItemAmountLb.attributedText = renewalItemAmountAttributed;
  115. self.renewalItemOriginalPriceLb.attributedText = self.viewModel.renewalItemOriginalPriceAttributed;
  116. self.amountSavingsPriceLb.text = self.viewModel.amountSavingsPrice;
  117. }
  118. - (UIView *)baseView{
  119. if (!_baseView) {
  120. _baseView = [[UIView alloc]init];
  121. _baseView.backgroundColor = HexColorFromRGB(0xF2F5FF);
  122. _baseView.layer.borderColor = rgba(176, 86, 68, 1).CGColor;
  123. _baseView.layer.borderWidth = 0;
  124. _baseView.layer.cornerRadius = adapt(16);
  125. _baseView.layer.masksToBounds = YES;
  126. }
  127. return _baseView;
  128. }
  129. - (UIImageView *)itemIcon{
  130. if (!_itemIcon) {
  131. _itemIcon = [[UIImageView alloc] init];
  132. _itemIcon.image = ImageByName(@"ym_member_center_renew_item_icon");
  133. }
  134. return _itemIcon;
  135. }
  136. - (UIImageView *)gradientView{
  137. if (!_gradientView) {
  138. _gradientView = [[UIImageView alloc] init];
  139. _gradientView.hidden = YES;
  140. //_gradientView.image = ImageByName(@"ym_member_center_renew_item_bg_normal");
  141. _gradientView.layer.borderWidth = 1;
  142. _gradientView.layer.borderColor = [UIColor clearColor].CGColor;
  143. _gradientView.layer.cornerRadius = adapt(8);
  144. _gradientView.layer.masksToBounds = YES;
  145. NSArray *colors = @[HexColorFromRGB(0xFFFFFF), HexColorFromRGB(0xFFE7D8)];
  146. NSArray *location = @[@(0), @(1)];
  147. [_gradientView ym_setGradientBackgroundWithColors:colors locations:location startPoint:CGPointMake(0, 0) endPoint:CGPointMake(0, 1)];
  148. }
  149. return _gradientView;
  150. }
  151. - (UILabel *)renewalItemNameLb{
  152. if (!_renewalItemNameLb) {
  153. _renewalItemNameLb = [[UILabel alloc]init];
  154. _renewalItemNameLb.font = LCBoldFont(13);
  155. _renewalItemNameLb.textColor = HexColorFromRGB(0x333333);
  156. _renewalItemNameLb.textAlignment = NSTextAlignmentCenter;
  157. _renewalItemNameLb.text = @"******";
  158. }
  159. return _renewalItemNameLb;
  160. }
  161. - (UILabel *)renewalItemAmountLb{
  162. if (!_renewalItemAmountLb) {
  163. _renewalItemAmountLb = [[UILabel alloc]init];
  164. _renewalItemAmountLb.font = LCBoldFont(28);
  165. _renewalItemAmountLb.textColor = rgba(101, 50, 36, 1);
  166. _renewalItemAmountLb.textAlignment = NSTextAlignmentCenter;
  167. _renewalItemAmountLb.text = @"¥******";
  168. }
  169. return _renewalItemAmountLb;
  170. }
  171. - (UILabel *)renewalItemOriginalPriceLb{
  172. if (!_renewalItemOriginalPriceLb) {
  173. _renewalItemOriginalPriceLb = [[UILabel alloc]init];
  174. _renewalItemOriginalPriceLb.font = LCFont(9);
  175. _renewalItemOriginalPriceLb.textColor = HexColorFromRGB(0xEFEFFB);
  176. _renewalItemOriginalPriceLb.textAlignment = NSTextAlignmentCenter;
  177. _renewalItemOriginalPriceLb.text = @"原价****";
  178. }
  179. return _renewalItemOriginalPriceLb;
  180. }
  181. - (UILabel *)amountSavingsPriceLb{
  182. if (!_amountSavingsPriceLb) {
  183. _amountSavingsPriceLb = [[UILabel alloc]init];
  184. _amountSavingsPriceLb.font = LCFont(10);
  185. _amountSavingsPriceLb.textColor = rgba(101, 50, 36, 1);
  186. _amountSavingsPriceLb.textAlignment = NSTextAlignmentCenter;
  187. _amountSavingsPriceLb.text = @"立省***元";
  188. _amountSavingsPriceLb.backgroundColor = HexColorFromRGBA(0xFFFFFF, 0);
  189. }
  190. return _amountSavingsPriceLb;
  191. }
  192. - (UIImageView *)selectedImgv {
  193. if (!_selectedImgv) {
  194. _selectedImgv = [[UIImageView alloc] init];
  195. _selectedImgv.hidden = YES;
  196. _selectedImgv.image = ImageByName(@"ym_member_center_selected_mark");
  197. }
  198. return _selectedImgv;
  199. }
  200. @end