RQVipPriceCell.m 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. //
  2. // RQVipPriceCell.m
  3. // jiaPei
  4. //
  5. // Created by 张嵘 on 2022/11/9.
  6. // Copyright © 2022 JCZ. All rights reserved.
  7. //
  8. #import "RQVipPriceCell.h"
  9. @interface RQVipPriceCell ()
  10. @property (nonatomic, readwrite, strong) RQVipSinglePriceItemViewModel *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 UILabel *saveMoneyLabel;
  17. @property (weak, nonatomic) IBOutlet UIImageView *saveMoneyLabelBgImageView;
  18. @property (weak, nonatomic) IBOutlet UIButton *recommendBtn;
  19. @end
  20. @implementation RQVipPriceCell
  21. #pragma mark - PublicMethods
  22. + (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
  23. static NSString *ID = @"RQVipPriceCell";
  24. [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
  25. RQVipPriceCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
  26. if (!cell) cell = [self rq_viewFromXib];
  27. return cell;
  28. }
  29. - (void)bindViewModel:(RQVipSinglePriceItemViewModel *)viewModel {
  30. _viewModel = viewModel;
  31. @weakify(self)
  32. [[[RACObserve(viewModel, isSelect) takeUntil:self.rac_prepareForReuseSignal] distinctUntilChanged] subscribeNext:^(id _Nullable x) {
  33. @strongify(self)
  34. if (viewModel.isSelect) {
  35. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  36. corner.radius = QQRadiusMake(10, 25, 10, 10);
  37. corner.borderColor = [UIColor qmui_colorWithHexString:@"#FA6E52"];
  38. corner.borderWidth = 4;
  39. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFEEE6"];
  40. } size:self.myBgView.bounds.size];
  41. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  42. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FA6E52"];
  43. graColor.toColor = [UIColor qmui_colorWithHexString:@"#F5834F"];
  44. graColor.type = QQGradualChangeTypeLeftToRight;
  45. } QQCorner:^(QQCorner *corner) {
  46. corner.radius = QQRadiusMake(0, 0, 10, 10);
  47. corner.borderColor = [UIColor qmui_colorWithHexString:@"#FA6E52"];
  48. corner.borderWidth = 4;
  49. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  50. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  51. self.saveMoneyLabel.textColor = RQColorFromHexString(@"#FFFFFF");
  52. } else {
  53. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  54. corner.radius = QQRadiusMake(10, 25, 10, 10);
  55. corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
  56. corner.borderWidth = 2;
  57. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFFFFF"];
  58. } size:self.myBgView.bounds.size];
  59. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  60. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FFE9DC"];
  61. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FFE9DC"];
  62. graColor.type = QQGradualChangeTypeLeftToRight;
  63. } QQCorner:^(QQCorner *corner) {
  64. corner.radius = QQRadiusMake(0, 0, 10, 10);
  65. corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
  66. corner.borderWidth = 2;
  67. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  68. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  69. self.saveMoneyLabel.textColor = RQColorFromHexString(@"#654520");
  70. }
  71. }];
  72. _myTitleLabel.text = viewModel.typeModel.dictLabel;
  73. NSString *nowPriceStr;
  74. NSString *oldPriceStr;
  75. if (RQStringIsNotEmpty(viewModel.typeModel.dictValue) && [viewModel.typeModel.dictValue containsString:@","]) {
  76. nowPriceStr = [viewModel.typeModel.dictValue componentsSeparatedByString:@","].firstObject;
  77. if ([viewModel.typeModel.dictValue componentsSeparatedByString:@","].count >= 2) {
  78. oldPriceStr = [viewModel.typeModel.dictValue componentsSeparatedByString:@","][1];
  79. } else {
  80. oldPriceStr = @"";
  81. }
  82. } else {
  83. nowPriceStr = viewModel.typeModel.dictValue;
  84. oldPriceStr = viewModel.typeModel.dictValue;
  85. }
  86. NSString *str = [NSString stringWithFormat:@"各科单独买¥%@元",oldPriceStr];
  87. NSDictionary *attrDic = @{
  88. NSStrikethroughStyleAttributeName: @(1),
  89. NSFontAttributeName : [UIFont systemFontOfSize:10],
  90. NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)
  91. };
  92. NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:str attributes:attrDic];
  93. _oldPriceLabel.attributedText = attrStr;
  94. // _oldPriceLabel.hidden = [nowPriceStr isEqualToString:oldPriceStr];
  95. NSString *nowPrice = [NSString stringWithFormat:@"¥%@",nowPriceStr];
  96. NSString *year = [NSString stringWithFormat:@"/1年"];
  97. NSString *price = [NSString stringWithFormat:@"%@%@",nowPrice,year];
  98. NSMutableAttributedString *nowPriceAttrStr = [[NSMutableAttributedString alloc] initWithString:price];
  99. [nowPriceAttrStr addAttribute:NSFontAttributeName value:RQSemiboldFont(32) range:[price rangeOfString:nowPrice]];
  100. [nowPriceAttrStr addAttribute:NSFontAttributeName value:RQRegularFont_15 range:[price rangeOfString:year]];
  101. [nowPriceAttrStr addAttribute:NSForegroundColorAttributeName value:[UIColor qmui_colorWithHexString:@"#654520"] range:[price rangeOfString:year]];
  102. _nowPriceLabel.attributedText = nowPriceAttrStr;
  103. self.recommendBtn.hidden = ![viewModel.typeModel.dictLabel containsString:@"+"] && ![viewModel.typeModel.dictLabel containsString:@"全"];
  104. self.oldPriceLabel.hidden = ![viewModel.typeModel.dictLabel containsString:@"+"] && ![viewModel.typeModel.dictLabel containsString:@"全"];
  105. }
  106. #pragma mark - SystemMethods
  107. - (void)awakeFromNib {
  108. [super awakeFromNib];
  109. self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
  110. corner.radius = QQRadiusMake(10, 25, 10, 10);
  111. corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
  112. corner.borderWidth = 2;
  113. corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFFFFF"];
  114. } size:self.myBgView.bounds.size];
  115. self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  116. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FFE9DC"];
  117. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FFE9DC"];
  118. graColor.type = QQGradualChangeTypeLeftToRight;
  119. } QQCorner:^(QQCorner *corner) {
  120. corner.radius = QQRadiusMake(0, 0, 10, 10);
  121. corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
  122. corner.borderWidth = 2;
  123. corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
  124. } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
  125. [_recommendBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  126. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FD5237"];
  127. graColor.toColor = [UIColor qmui_colorWithHexString:@"#E4302D"];
  128. graColor.type = QQGradualChangeTypeLeftToRight;
  129. } size:_recommendBtn.bounds.size cornerRadius:QQRadiusMake(10, 2, 2, 10)] forState:UIControlStateNormal];
  130. }
  131. @end