RQVipAllPriceCell.m 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. //
  2. // RQVipAllPriceCell.m
  3. // jiaPei
  4. //
  5. // Created by 张嵘 on 2022/3/1.
  6. // Copyright © 2022 JCZ. All rights reserved.
  7. //
  8. #import "RQVipAllPriceCell.h"
  9. @interface RQVipAllPriceCell ()
  10. @property (nonatomic, readwrite, strong) RQVipAllPriceItemViewModel *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 *oldPriceLabel;
  15. @property (weak, nonatomic) IBOutlet UILabel *myTitleLabel;
  16. @property (weak, nonatomic) IBOutlet UIImageView *saveMoneyLabelBgImageView;
  17. @property (weak, nonatomic) IBOutlet UILabel *saveMoneyLabel;
  18. @property (weak, nonatomic) IBOutlet QMUIButton *subjectOneBtn;
  19. @property (weak, nonatomic) IBOutlet QMUIButton *subjectTwoBtn;
  20. @property (weak, nonatomic) IBOutlet QMUIButton *subjectThreeBtn;
  21. @property (weak, nonatomic) IBOutlet QMUIButton *subjectFourBtn;
  22. @property (weak, nonatomic) IBOutlet UIImageView *selectImageView;
  23. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *selectImgTopToBgView;
  24. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *selectImgLeadingToBgView;
  25. @property (weak, nonatomic) IBOutlet UIButton *recommendBtn;
  26. @end
  27. @implementation RQVipAllPriceCell
  28. #pragma mark - PublicMethods
  29. + (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
  30. static NSString *ID = @"RQVipAllPriceCell";
  31. [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
  32. RQVipAllPriceCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
  33. if (!cell) cell = [self rq_viewFromXib];
  34. return cell;
  35. }
  36. - (void)bindViewModel:(RQVipAllPriceItemViewModel *)viewModel {
  37. @weakify(self)
  38. _viewModel = viewModel;
  39. [[[RACObserve(viewModel, isSelect) takeUntil:self.rac_prepareForReuseSignal] distinctUntilChanged] subscribeNext:^(id _Nullable x) {
  40. @strongify(self)
  41. if (viewModel.isSelect) {
  42. self.selectImageView.hidden = NO;
  43. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  44. corner.radius = QQRadiusMake(10, 25, 10, 10);
  45. corner.borderColor = [UIColor qmui_colorWithHexString:@"#FF944D"];
  46. corner.borderWidth = 4;
  47. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFEFD8"];
  48. } size:self.myBgView.bounds.size];
  49. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  50. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FC9652"];
  51. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FFBE5D"];
  52. graColor.type = QQGradualChangeTypeLeftToRight;
  53. } QQCorner:^(QQCorner *corner) {
  54. corner.radius = QQRadiusMake(0, 0, 10, 10);
  55. corner.borderColor = [UIColor qmui_colorWithHexString:@"#FF944D"];
  56. corner.borderWidth = 4;
  57. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  58. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  59. } else {
  60. self.selectImageView.hidden = YES;
  61. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  62. corner.radius = QQRadiusMake(10, 25, 10, 10);
  63. corner.borderColor = [UIColor qmui_colorWithHexString:@"#E0B279"];
  64. corner.borderWidth = 2;
  65. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FEF6EC"];
  66. } size:self.myBgView.bounds.size];
  67. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  68. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#DBA05C"];
  69. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F3C085"];
  70. graColor.type = QQGradualChangeTypeLeftToRight;
  71. } QQCorner:^(QQCorner *corner) {
  72. corner.radius = QQRadiusMake(0, 0, 10, 10);
  73. corner.borderColor = [UIColor qmui_colorWithHexString:@"#E0B279"];
  74. corner.borderWidth = 2;
  75. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  76. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  77. }
  78. }];
  79. _myTitleLabel.text = viewModel.typeModel.dictLabel;
  80. NSString *nowPriceStr;
  81. NSString *oldPriceStr;
  82. if (RQStringIsNotEmpty(viewModel.typeModel.dictValue) && [viewModel.typeModel.dictValue containsString:@","]) {
  83. nowPriceStr = [viewModel.typeModel.dictValue componentsSeparatedByString:@","].firstObject;
  84. if ([viewModel.typeModel.dictValue componentsSeparatedByString:@","].count >= 2) {
  85. oldPriceStr = [viewModel.typeModel.dictValue componentsSeparatedByString:@","][1];
  86. } else {
  87. oldPriceStr = @"";
  88. }
  89. } else {
  90. nowPriceStr = viewModel.typeModel.dictValue;
  91. oldPriceStr = viewModel.typeModel.dictValue;
  92. }
  93. _saveMoneyLabel.text = [NSString stringWithFormat:@"立省%.f元",[oldPriceStr floatValue] - [nowPriceStr floatValue]];
  94. NSString *str = [NSString stringWithFormat:@"原价%@元",oldPriceStr];
  95. NSDictionary *attrDic = @{
  96. NSStrikethroughStyleAttributeName: @(1),
  97. NSFontAttributeName : [UIFont systemFontOfSize:13],
  98. NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)
  99. };
  100. NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:str attributes:attrDic];
  101. _oldPriceLabel.attributedText = attrStr;
  102. _oldPriceLabel.hidden = [nowPriceStr isEqualToString:oldPriceStr];
  103. NSString *nowPrice = [NSString stringWithFormat:@"¥%@",nowPriceStr];
  104. NSString *year = [NSString stringWithFormat:[viewModel.typeModel.dictLabel isEqualToString:@"理论实操计时"]? @"/长期" : @"/1年"];
  105. NSString *price = [NSString stringWithFormat:@"%@%@",nowPrice,year];
  106. NSMutableAttributedString *nowPriceAttrStr = [[NSMutableAttributedString alloc] initWithString:price];
  107. [nowPriceAttrStr addAttribute:NSFontAttributeName value:RQSemiboldFont(32) range:[price rangeOfString:nowPrice]];
  108. [nowPriceAttrStr addAttribute:NSFontAttributeName value:RQRegularFont_18 range:[price rangeOfString:year]];
  109. [nowPriceAttrStr addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_2 range:[price rangeOfString:year]];
  110. _nowPriceLabel.attributedText = nowPriceAttrStr;
  111. }
  112. #pragma mark - SystemMethods
  113. - (void)awakeFromNib {
  114. [super awakeFromNib];
  115. CGFloat subjectCornerRadius = _subjectOneBtn.qmui_height / 2.f;
  116. [_subjectOneBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  117. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#DBA05C"];
  118. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F3C085"];
  119. graColor.type = QQGradualChangeTypeLeftToRight;
  120. } size:_subjectOneBtn.bounds.size cornerRadius:QQRadiusMake(subjectCornerRadius, subjectCornerRadius, subjectCornerRadius, subjectCornerRadius)] forState:UIControlStateNormal];
  121. [_subjectTwoBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  122. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#DBA05C"];
  123. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F3C085"];
  124. graColor.type = QQGradualChangeTypeLeftToRight;
  125. } size:_subjectTwoBtn.bounds.size cornerRadius:QQRadiusMake(subjectCornerRadius, subjectCornerRadius, subjectCornerRadius, subjectCornerRadius)] forState:UIControlStateNormal];
  126. [_subjectThreeBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  127. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#DBA05C"];
  128. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F3C085"];
  129. graColor.type = QQGradualChangeTypeLeftToRight;
  130. } size:_subjectThreeBtn.bounds.size cornerRadius:QQRadiusMake(subjectCornerRadius, subjectCornerRadius, subjectCornerRadius, subjectCornerRadius)] forState:UIControlStateNormal];
  131. [_subjectFourBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  132. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#DBA05C"];
  133. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F3C085"];
  134. graColor.type = QQGradualChangeTypeLeftToRight;
  135. } size:_subjectFourBtn.bounds.size cornerRadius:QQRadiusMake(subjectCornerRadius, subjectCornerRadius, subjectCornerRadius, subjectCornerRadius)] forState:UIControlStateNormal];
  136. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  137. corner.radius = QQRadiusMake(10, 25, 10, 10);
  138. corner.borderColor = [UIColor qmui_colorWithHexString:@"#E0B279"];
  139. corner.borderWidth = 2;
  140. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FEF6EC"];
  141. } size:self.myBgView.bounds.size];
  142. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  143. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#DBA05C"];
  144. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F3C085"];
  145. graColor.type = QQGradualChangeTypeLeftToRight;
  146. } QQCorner:^(QQCorner *corner) {
  147. corner.radius = QQRadiusMake(0, 0, 10, 10);
  148. corner.borderColor = [UIColor qmui_colorWithHexString:@"#E0B279"];
  149. corner.borderWidth = 2;
  150. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  151. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  152. self.selectImageView.hidden = YES;
  153. _selectImgLeadingToBgView.constant = - (RQ_FIT_HORIZONTAL(16.f) / 2.f) + 4;
  154. _selectImgTopToBgView.constant = - (RQ_FIT_HORIZONTAL(16.f) / 2.f) + 4;
  155. [_recommendBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  156. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FF4D53"];
  157. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FF724D"];
  158. graColor.type = QQGradualChangeTypeLeftToRight;
  159. } size:_recommendBtn.bounds.size cornerRadius:QQRadiusMake(10, 0, 0, 10)] forState:UIControlStateNormal];
  160. }
  161. #pragma mark - PrivateMethods
  162. @end