RQVipTrainPriceCell.m 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. //
  2. // RQVipTrainPriceCell.m
  3. // jiaPei
  4. //
  5. // Created by 张嵘 on 2023/1/17.
  6. // Copyright © 2023 JCZ. All rights reserved.
  7. //
  8. #import "RQVipTrainPriceCell.h"
  9. @interface RQVipTrainPriceCell ()
  10. @property (nonatomic, readwrite, strong) RQVipTrainPriceItemViewModel *viewModel;
  11. @property (weak, nonatomic) IBOutlet UIImageView *myBgView;
  12. @property (weak, nonatomic) IBOutlet UIStackView *priceView;
  13. @property (weak, nonatomic) IBOutlet UILabel *nowPriceLabel;
  14. @property (weak, nonatomic) IBOutlet UILabel *myTitleLabel;
  15. @property (weak, nonatomic) IBOutlet QMUIButton *bottomBtn;
  16. @property (weak, nonatomic) IBOutlet UIImageView *saveMoneyLabelBgImageView;
  17. @property (weak, nonatomic) IBOutlet UIButton *recommendBtn;
  18. @property (weak, nonatomic) IBOutlet QMUIButton *btn1;
  19. @property (weak, nonatomic) IBOutlet QMUIButton *btn2;
  20. @property (weak, nonatomic) IBOutlet QMUIButton *hasActiveBtn;
  21. @end
  22. @implementation RQVipTrainPriceCell
  23. #pragma mark - PublicMethods
  24. + (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
  25. static NSString *ID = @"RQVipTrainPriceCell";
  26. [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
  27. RQVipTrainPriceCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
  28. if (!cell) cell = [self rq_viewFromXib];
  29. return cell;
  30. }
  31. - (void)bindViewModel:(RQVipTrainPriceItemViewModel *)viewModel {
  32. _viewModel = viewModel;
  33. @weakify(self)
  34. _myTitleLabel.text = viewModel.typeModel.dictLabel;
  35. RAC(self.hasActiveBtn, hidden) = [[[RACSignal combineLatest:@[RACObserve(RQ_VIP_Module, activationModel), RACObserve(viewModel, isSelect)]
  36. reduce:^id(RQActivationModel *activationModel, NSNumber *isSelect) {
  37. @strongify(self)
  38. if (RQ_VIP_Module.activationModel.isActive == 1) {
  39. self.myBgView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  40. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FF7336"];
  41. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FE5437"];
  42. graColor.type = QQGradualChangeTypeLeftToRight;
  43. } QQCorner:^(QQCorner *corner) {
  44. corner.radius = QQRadiusMake(10, 25, 10, 10);
  45. corner.borderColor = [UIColor qmui_colorWithHexString:@"#FFDAAB"];
  46. corner.borderWidth = 2;
  47. corner.borderPosition = QMUIImageBorderPositionTop|QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  48. } size:self.myBgView.bounds.size cornerRadius:QQRadiusMake(10, 25, 10, 10)];
  49. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  50. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#E83C2C"];
  51. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F14B32"];
  52. graColor.type = QQGradualChangeTypeLeftToRight;
  53. } QQCorner:^(QQCorner *corner) {
  54. corner.radius = QQRadiusMake(0, 0, 10, 10);
  55. corner.borderColor = [UIColor qmui_colorWithHexString:@"#FFDAAB"];
  56. corner.borderWidth = 2;
  57. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  58. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  59. self.myTitleLabel.textColor = UIColor.whiteColor;
  60. [self.btn1 setTitleColor:UIColor.whiteColor forState:UIControlStateNormal];
  61. [self.btn2 setTitleColor:UIColor.whiteColor forState:UIControlStateNormal];
  62. [self.bottomBtn setTitleNormal:@"以下套餐包含各科目VIP增值服务"];
  63. [self.bottomBtn setTitleColor:RQColorFromHexString(@"#FFECD4") forState:UIControlStateNormal];
  64. self.nowPriceLabel.textColor = UIColor.clearColor;
  65. [self.bottomBtn setImage:RQImageNamed(@"以下套餐黄") forState:UIControlStateNormal];
  66. } else {
  67. if (viewModel.isSelect) {
  68. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  69. corner.radius = QQRadiusMake(10, 25, 10, 10);
  70. corner.borderColor = [UIColor qmui_colorWithHexString:@"#FA6E52"];
  71. corner.borderWidth = 4;
  72. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFEEE6"];
  73. } size:self.myBgView.bounds.size];
  74. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  75. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FA6E52"];
  76. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F5834F"];
  77. graColor.type = QQGradualChangeTypeLeftToRight;
  78. } QQCorner:^(QQCorner *corner) {
  79. corner.radius = QQRadiusMake(0, 0, 10, 10);
  80. corner.borderColor = [UIColor qmui_colorWithHexString:@"#FA6E52"];
  81. corner.borderWidth = 4;
  82. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  83. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  84. [self.bottomBtn setTitleColor:RQColorFromHexString(@"#FFFFFF") forState:UIControlStateNormal];
  85. [self.bottomBtn setImage:RQImageNamed(@"以下套餐白") forState:UIControlStateNormal];
  86. } else {
  87. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  88. corner.radius = QQRadiusMake(10, 25, 10, 10);
  89. corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
  90. corner.borderWidth = 2;
  91. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFFFFF"];
  92. } size:self.myBgView.bounds.size];
  93. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  94. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FFE9DC"];
  95. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FFE9DC"];
  96. graColor.type = QQGradualChangeTypeLeftToRight;
  97. } QQCorner:^(QQCorner *corner) {
  98. corner.radius = QQRadiusMake(0, 0, 10, 10);
  99. corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
  100. corner.borderWidth = 2;
  101. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  102. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  103. [self.bottomBtn setTitleColor:RQColorFromHexString(@"#654520") forState:UIControlStateNormal];
  104. [self.bottomBtn setImage:RQImageNamed(@"以下套餐") forState:UIControlStateNormal];
  105. }
  106. NSString *nowPriceStr;
  107. NSString *oldPriceStr;
  108. if (RQStringIsNotEmpty(viewModel.typeModel.dictValue) && [viewModel.typeModel.dictValue containsString:@","]) {
  109. nowPriceStr = [viewModel.typeModel.dictValue componentsSeparatedByString:@","].firstObject;
  110. if ([viewModel.typeModel.dictValue componentsSeparatedByString:@","].count >= 2) {
  111. oldPriceStr = [viewModel.typeModel.dictValue componentsSeparatedByString:@","][1];
  112. } else {
  113. oldPriceStr = @"";
  114. }
  115. } else {
  116. nowPriceStr = viewModel.typeModel.dictValue;
  117. oldPriceStr = viewModel.typeModel.dictValue;
  118. }
  119. NSString *nowPrice = [NSString stringWithFormat:@"¥%@",nowPriceStr];
  120. NSString *year = [NSString stringWithFormat:[viewModel.typeModel.dictLabel isEqualToString:@"理论实操计时"]? @"/长期" : @"/1年"];
  121. NSString *price = [NSString stringWithFormat:@"%@%@",nowPrice,year];
  122. NSMutableAttributedString *nowPriceAttrStr = [[NSMutableAttributedString alloc] initWithString:price];
  123. [nowPriceAttrStr addAttribute:NSFontAttributeName value:RQSemiboldFont(32) range:[price rangeOfString:nowPrice]];
  124. [nowPriceAttrStr addAttribute:NSFontAttributeName value:RQRegularFont_15 range:[price rangeOfString:year]];
  125. [nowPriceAttrStr addAttribute:NSForegroundColorAttributeName value:[UIColor qmui_colorWithHexString:viewModel.isSelect? @"#EE2A2C" : @"#654520"] range:[price rangeOfString:nowPrice]];
  126. [nowPriceAttrStr addAttribute:NSForegroundColorAttributeName value:[UIColor qmui_colorWithHexString:viewModel.isSelect? @"#EE2A2C" : @"#654520"] range:[price rangeOfString:year]];
  127. self.nowPriceLabel.attributedText = nowPriceAttrStr;
  128. self.myTitleLabel.textColor = [UIColor qmui_colorWithHexString:viewModel.isSelect? @"#49171A" : @"#654520"];
  129. self.myTitleLabel.textColor = RQColorFromHexString(@"#49171A");
  130. [self.btn1 setTitleColor:RQColorFromHexString(@"#654520") forState:UIControlStateNormal];
  131. [self.btn2 setTitleColor:RQColorFromHexString(@"#654520") forState:UIControlStateNormal];
  132. }
  133. return @(!(RQ_VIP_Module.activationModel.isActive == 1));
  134. }] deliverOnMainThread] takeUntil:self.rac_prepareForReuseSignal];
  135. self.recommendBtn.hidden = ![viewModel.typeModel.dictLabel containsString:@"+"] && ![viewModel.typeModel.dictLabel containsString:@"全"];
  136. }
  137. #pragma mark - SystemMethods
  138. - (void)awakeFromNib {
  139. [super awakeFromNib];
  140. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  141. corner.radius = QQRadiusMake(10, 25, 10, 10);
  142. corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
  143. corner.borderWidth = 2;
  144. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFFFFF"];
  145. } size:self.myBgView.bounds.size];
  146. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  147. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FFE9DC"];
  148. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FFE9DC"];
  149. graColor.type = QQGradualChangeTypeLeftToRight;
  150. } QQCorner:^(QQCorner *corner) {
  151. corner.radius = QQRadiusMake(0, 0, 10, 10);
  152. corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
  153. corner.borderWidth = 2;
  154. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  155. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  156. [_recommendBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  157. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FD5237"];
  158. graColor.toColor = [UIColor qmui_colorWithHexString:@"#E4302D"];
  159. graColor.type = QQGradualChangeTypeLeftToRight;
  160. } size:_recommendBtn.bounds.size cornerRadius:QQRadiusMake(10, 2, 2, 10)] forState:UIControlStateNormal];
  161. CGFloat radius = RQ_FIT_HORIZONTAL(34.f) / 2.f;
  162. [self.hasActiveBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  163. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FDD19F"];
  164. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FDDCB7"];
  165. graColor.type = QQGradualChangeTypeLeftToRight;
  166. } size:CGSizeMake(RQ_FIT_HORIZONTAL(84.f), RQ_FIT_HORIZONTAL(34.f)) cornerRadius:QQRadiusMake(radius, radius, radius, 0)] forState:UIControlStateNormal];
  167. _btn1.imagePosition = QMUIButtonImagePositionTop;
  168. _btn2.imagePosition = QMUIButtonImagePositionTop;
  169. _btn1.titleLabel.font = RQRegularFont_13;
  170. _btn2.titleLabel.font = RQRegularFont_13;
  171. self.bottomBtn.imagePosition = QMUIButtonImagePositionRight;
  172. self.bottomBtn.titleLabel.font = RQSemiboldFont(13);
  173. }
  174. @end