RQExerciseAnswerCell.m 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. //
  2. // RQExerciseAnswerCell.m
  3. // JSJP
  4. //
  5. // Created by 张嵘 on 2021/8/16.
  6. //
  7. #import "RQExerciseAnswerCell.h"
  8. @interface RQExerciseAnswerCell ()
  9. @property (nonatomic, readwrite, strong) RQExerciseAnswerItemViewModel *viewModel;
  10. @property (weak, nonatomic) IBOutlet UILabel *answerLabel;
  11. @property (weak, nonatomic) IBOutlet QMUIButton *lookSkillBtn;
  12. @property (weak, nonatomic) IBOutlet YYLabel *skillLabel;
  13. @property (weak, nonatomic) IBOutlet UIImageView *coverImageView;
  14. @property (weak, nonatomic) IBOutlet UIView *tryseeView;
  15. @property (weak, nonatomic) IBOutlet UILabel *trycount_label;
  16. @property (weak, nonatomic) IBOutlet UILabel *jqmd_label;
  17. @property (weak, nonatomic) IBOutlet QMUIButton *trylookSkillBtn;
  18. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *skill_bottom_layout;
  19. @end
  20. @implementation RQExerciseAnswerCell
  21. #pragma mark - PublicMethods
  22. + (instancetype)cellWithTableView:(UITableView *)tableView {
  23. static NSString *ID = @"RQExerciseAnswerCell";
  24. RQExerciseAnswerCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
  25. if (!cell) {
  26. cell = [self rq_viewFromXib];
  27. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  28. }
  29. return cell;
  30. }
  31. - (void)bindViewModel:(RQExerciseAnswerItemViewModel *)viewModel {
  32. _viewModel = viewModel;
  33. @weakify(self)
  34. self.skillLabel.userInteractionEnabled = YES;
  35. RAC(self.answerLabel, text) = [[RACObserve(viewModel, answerString) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
  36. [[[[RACObserve(viewModel, skillHeight) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread] distinctUntilChanged] subscribeNext:^(id _Nullable x) {
  37. @strongify(self)
  38. // self.coverImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  39. // graColor.fromColor = [UIColor colorWithHexString:@"#F2F3F5" alpha:0.2];
  40. // graColor.toColor = [UIColor colorWithHexString:@"#F2F3F5" alpha:1.f];
  41. // graColor.type = QQGradualChangeTypeLeftToRight;
  42. // } size:CGSizeMake(RQ_SCREEN_WIDTH - 32.f - 16.f - RQ_FIT_HORIZONTAL(128.f) + 30.f, viewModel.skillHeight) cornerRadius:QQRadiusZero];
  43. self.coverImageView.image = [UIImage imageNamed:@"背景遮罩"];
  44. }];
  45. RAC(self.skillLabel, attributedText) = [[RACObserve(viewModel, skillString) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
  46. int count = 0;
  47. if(RQ_USER_MANAGER.tryLookCount>0){
  48. count = RQ_USER_MANAGER.tryLookCount-1;
  49. }
  50. int tryCount = RQ_USER_MANAGER.tryLookCount;
  51. if(RQ_Exercise_Module.currentExerciseType == RQExerciseType_Recitation){//背题模式
  52. tryCount = 0;
  53. count = 0;
  54. }
  55. self.trycount_label.text = [NSString stringWithFormat:@"%d",count];//试看次数
  56. [[[[RACObserve(viewModel, ydtJSModel) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread] distinctUntilChanged] subscribeNext:^(RQYDTJSModel *ydtJSModel) {
  57. @strongify(self)
  58. if (RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectOne) {
  59. if (RQ_VIP_Module.isSubject1Vip) {
  60. self.coverImageView.hidden = YES;
  61. self.lookSkillBtn.hidden = YES;
  62. self.jqmd_label.hidden = YES;
  63. self.tryseeView.hidden = YES;
  64. } else if(tryCount>0){//是否试看
  65. self.coverImageView.hidden = YES;
  66. self.lookSkillBtn.hidden = YES;
  67. self.jqmd_label.hidden = YES;
  68. self.tryseeView.hidden = NO;
  69. } else {
  70. self.coverImageView.hidden = RQObjectIsNil(ydtJSModel);
  71. self.lookSkillBtn.hidden = RQObjectIsNil(ydtJSModel);
  72. self.jqmd_label.hidden = RQObjectIsNil(ydtJSModel);
  73. self.tryseeView.hidden = YES;
  74. }
  75. } else if (RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectFour) {
  76. if (RQ_VIP_Module.isSubject4Vip) {
  77. self.coverImageView.hidden = YES;
  78. self.lookSkillBtn.hidden = YES;
  79. self.jqmd_label.hidden = YES;
  80. self.tryseeView.hidden = YES;
  81. } else if(tryCount>0){//是否试看
  82. self.coverImageView.hidden = YES;
  83. self.lookSkillBtn.hidden = YES;
  84. self.jqmd_label.hidden = YES;
  85. self.tryseeView.hidden = NO;
  86. } else {
  87. self.coverImageView.hidden = RQObjectIsNil(ydtJSModel);
  88. self.lookSkillBtn.hidden = RQObjectIsNil(ydtJSModel);
  89. self.jqmd_label.hidden = RQObjectIsNil(ydtJSModel);
  90. self.tryseeView.hidden = YES;
  91. }
  92. } else if (RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectOne_LI) {
  93. if (RQ_VIP_Module.isSpSubject1Vip) {
  94. self.coverImageView.hidden = YES;
  95. self.lookSkillBtn.hidden = YES;
  96. self.jqmd_label.hidden = YES;
  97. self.tryseeView.hidden = YES;
  98. } else if(tryCount>0){//是否试看
  99. self.coverImageView.hidden = YES;
  100. self.lookSkillBtn.hidden = YES;
  101. self.jqmd_label.hidden = YES;
  102. self.tryseeView.hidden = NO;
  103. } else {
  104. self.coverImageView.hidden = RQObjectIsNil(ydtJSModel);
  105. self.lookSkillBtn.hidden = RQObjectIsNil(ydtJSModel);
  106. self.jqmd_label.hidden = RQObjectIsNil(ydtJSModel);
  107. self.tryseeView.hidden = YES;
  108. }
  109. } else if (RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectFour_LI) {
  110. if (RQ_VIP_Module.isSpSubject4Vip) {
  111. self.coverImageView.hidden = YES;
  112. self.lookSkillBtn.hidden = YES;
  113. self.jqmd_label.hidden = YES;
  114. self.tryseeView.hidden = YES;
  115. } else if(tryCount>0){//是否试看
  116. self.coverImageView.hidden = YES;
  117. self.lookSkillBtn.hidden = YES;
  118. self.jqmd_label.hidden = YES;
  119. self.tryseeView.hidden = NO;
  120. } else {
  121. self.coverImageView.hidden = RQObjectIsNil(ydtJSModel);
  122. self.lookSkillBtn.hidden = RQObjectIsNil(ydtJSModel);
  123. self.jqmd_label.hidden = RQObjectIsNil(ydtJSModel);
  124. self.tryseeView.hidden = YES;
  125. }
  126. } else{
  127. self.coverImageView.hidden = YES;
  128. self.lookSkillBtn.hidden = YES;
  129. self.jqmd_label.hidden = YES;
  130. self.tryseeView.hidden = YES;
  131. }
  132. self.skillLabel.hidden = RQObjectIsNil(ydtJSModel);
  133. }];
  134. }
  135. #pragma mark - SystemMethods
  136. - (void)awakeFromNib {
  137. [super awakeFromNib];
  138. @weakify(self)
  139. dispatch_async(dispatch_get_main_queue(), ^{
  140. @strongify(self)
  141. self.lookSkillBtn.imagePosition = QMUIButtonImagePositionRight;
  142. [self.lookSkillBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  143. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FF7E4D"];
  144. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FF4D53"];
  145. graColor.type = QQGradualChangeTypeLeftToRight;
  146. } size:CGSizeMake(RQ_FIT_HORIZONTAL(128.f), RQ_FIT_HORIZONTAL(34.f)) cornerRadius:QQRadiusMakeSame(RQ_FIT_HORIZONTAL(34.f) / 2.f)] forState:UIControlStateNormal];
  147. self.trylookSkillBtn.imagePosition = QMUIButtonImagePositionRight;
  148. [self.trylookSkillBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
  149. graColor.fromColor = [UIColor qmui_colorWithHexString:@"#FF7E4D"];
  150. graColor.toColor = [UIColor qmui_colorWithHexString:@"#FF4D53"];
  151. graColor.type = QQGradualChangeTypeLeftToRight;
  152. } size:CGSizeMake(RQ_FIT_HORIZONTAL(128.f), RQ_FIT_HORIZONTAL(34.f)) cornerRadius:QQRadiusMakeSame(RQ_FIT_HORIZONTAL(34.f) / 2.f)] forState:UIControlStateNormal];
  153. // NSInteger line = RQ_COMMON_MANAGER.APP_SWITCH? 0 : ((RQ_VIP_Module.isSubject1Vip && RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectOne)? 0 : ((RQ_VIP_Module.isSubject4Vip && RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectFour)? 0 : 1));
  154. NSInteger line = ((RQ_VIP_Module.isSubject1Vip && RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectOne)? 0 : ((RQ_VIP_Module.isSubject4Vip && RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectFour)? 0 : 1));
  155. if(RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectOne_LI||
  156. RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectFour_LI
  157. ){
  158. line = ((RQ_VIP_Module.isSpSubject1Vip && RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectOne_LI)? 0 : ((RQ_VIP_Module.isSpSubject4Vip && RQ_YDTQuestion_Module.subject == RQHomePageSubjectType_SubjectFour_LI)? 0 : 1));
  159. }
  160. self.skill_bottom_layout.constant = 16.f;
  161. int tryCount = RQ_USER_MANAGER.tryLookCount;
  162. if(RQ_Exercise_Module.currentExerciseType == RQExerciseType_Recitation){//背题模式
  163. tryCount = 0;
  164. }
  165. if(tryCount>0 && line == 1){//是否试看
  166. line = 0;
  167. self.skill_bottom_layout.constant = 56.f;
  168. }
  169. self.skillLabel.numberOfLines = line;
  170. [self layoutIfNeeded];
  171. });
  172. }
  173. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  174. [super setSelected:selected animated:animated];
  175. // Configure the view for the selected state
  176. }
  177. - (IBAction)showSkillAction:(id)sender {
  178. [RQ_VIP_Module gotoBuyVipWithVipPageType:RQVIPPageType_Full];
  179. }
  180. @end