RQCommonReusableView.m 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. //
  2. // RQCommonReusableView.m
  3. // YueXueChe
  4. //
  5. // Created by 张嵘 on 2018/12/19.
  6. // Copyright © 2018 lee. All rights reserved.
  7. //
  8. #import "RQCommonReusableView.h"
  9. #import "RQCommonGroupViewModel.h"
  10. @interface RQCommonReusableView ()
  11. /// viewModel
  12. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *viewModel;
  13. @property (nonatomic, readwrite, strong) UIView *line;
  14. @property (nonatomic, readwrite, strong) NSString *kind;
  15. @end
  16. @implementation RQCommonReusableView
  17. + (instancetype)reusableViewWithCollectionView:(UICollectionView *)collectionView OfKind:(NSString *)elementKind forIndexPath:(NSIndexPath *)indexPath {
  18. NSString *ID = [NSString stringWithFormat:@"%@%@", @"CommonReusableView",elementKind];
  19. [collectionView registerClass:[RQCommonReusableView class] forSupplementaryViewOfKind:elementKind withReuseIdentifier:ID];
  20. RQCommonReusableView *reusableView = [collectionView dequeueReusableSupplementaryViewOfKind:elementKind withReuseIdentifier:ID forIndexPath:indexPath];
  21. if (elementKind == UICollectionElementKindSectionHeader) {
  22. reusableView.backgroundColor = RQ_LIST_BACKGROUNDCOLOR;
  23. reusableView.headerContentLabel.hidden = NO;
  24. reusableView.footerContentLabel.hidden = YES;
  25. }else {
  26. reusableView.backgroundColor = RQ_LIST_BACKGROUNDCOLOR;
  27. reusableView.headerContentLabel.hidden = YES;
  28. reusableView.footerContentLabel.hidden = NO;
  29. }
  30. return reusableView;
  31. }
  32. - (void)bindViewModel:(RQCommonGroupViewModel *)viewModel {
  33. self.viewModel = viewModel;
  34. if (viewModel.groupModel) {
  35. if ([self.reuseIdentifier containsString:UICollectionElementKindSectionHeader]) {
  36. if (!RQObjectIsNil(self.viewModel.groupModel.headerBgColor)) {
  37. self.backgroundColor = self.viewModel.groupModel.headerLabelColor;
  38. }
  39. if (RQStringIsNotEmpty(self.viewModel.groupModel.header)) {
  40. [self initHeaderView];
  41. self.headerContentLabel.hidden = NO;
  42. }
  43. } else if ([self.reuseIdentifier containsString:UICollectionElementKindSectionFooter]) {
  44. if (!RQObjectIsNil(self.viewModel.groupModel.footerBgColor)) {
  45. self.backgroundColor = self.viewModel.groupModel.footerBgColor;
  46. }
  47. if (RQStringIsNotEmpty(self.viewModel.groupModel.footer)) {
  48. [self initFooterView];
  49. self.footerContentLabel.hidden = NO;
  50. }
  51. }
  52. } else {
  53. if (viewModel.header && viewModel.footer) {
  54. [self initHeaderView];
  55. [self initFooterView];
  56. self.headerContentLabel.hidden = NO;
  57. self.footerContentLabel.hidden = NO;
  58. } else if (viewModel.header || viewModel.footer) {
  59. if (viewModel.header && !viewModel.footer) {
  60. [self initHeaderView];
  61. self.headerContentLabel.hidden = NO;
  62. self.footerContentLabel.hidden = YES;
  63. }else if (!viewModel.header && viewModel.footer) {
  64. [self initFooterView];
  65. self.headerContentLabel.hidden = YES;
  66. self.footerContentLabel.hidden = NO;
  67. }
  68. } else {
  69. self.headerContentLabel.hidden = YES;
  70. self.footerContentLabel.hidden = YES;
  71. }
  72. }
  73. }
  74. - (void)initHeaderView {
  75. @weakify(self)
  76. [self addSubview:self.headerContentLabel];
  77. [_headerContentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  78. @strongify(self)
  79. make.centerY.mas_equalTo(self);
  80. make.left.mas_equalTo(self).mas_equalTo(11.f);
  81. make.right.mas_equalTo(self).mas_equalTo(-11.f);
  82. }];
  83. [self addSubview:self.line];
  84. [_line mas_makeConstraints:^(MASConstraintMaker *make) {
  85. @strongify(self)
  86. make.left.right.bottom.mas_equalTo(self);
  87. make.height.mas_offset(1);
  88. }];
  89. if (RQObjectIsNil(self.viewModel.groupModel)) {
  90. _headerContentLabel.text = self.viewModel.header;
  91. _headerContentLabel.font = self.viewModel.headerFont;
  92. } else {
  93. if (RQStringIsNotEmpty(self.viewModel.groupModel.header)) {
  94. _headerContentLabel.text = self.viewModel.groupModel.header;
  95. }
  96. if (!RQObjectIsNil(self.viewModel.groupModel.headerFont)) {
  97. _headerContentLabel.font = self.viewModel.groupModel.headerFont;
  98. }
  99. if (!RQObjectIsNil(self.viewModel.groupModel.headerLabelColor)) {
  100. _headerContentLabel.textColor = self.viewModel.groupModel.headerLabelColor;
  101. }
  102. }
  103. }
  104. - (void)initFooterView {
  105. @weakify(self)
  106. [self addSubview:self.footerContentLabel];
  107. [_footerContentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  108. @strongify(self)
  109. make.centerY.mas_equalTo(self);
  110. make.left.mas_equalTo(self).mas_equalTo(11.f);
  111. make.right.mas_equalTo(self).mas_equalTo(-11.f);
  112. }];
  113. [self addSubview:self.line];
  114. [_line mas_makeConstraints:^(MASConstraintMaker *make) {
  115. @strongify(self)
  116. make.left.right.bottom.mas_equalTo(self);
  117. make.height.mas_offset(1);
  118. }];
  119. if (RQObjectIsNil(self.viewModel.groupModel)) {
  120. _footerContentLabel.text = self.viewModel.footer;
  121. _footerContentLabel.font = self.viewModel.footerFont;
  122. } else {
  123. if (RQStringIsNotEmpty(self.viewModel.groupModel.footer)) {
  124. _footerContentLabel.text = self.viewModel.groupModel.footer;
  125. }
  126. if (!RQObjectIsNil(self.viewModel.groupModel.footerFont)) {
  127. _footerContentLabel.font = self.viewModel.groupModel.footerFont;
  128. }
  129. if (!RQObjectIsNil(self.viewModel.groupModel.headerLabelColor)) {
  130. _footerContentLabel.textColor = self.viewModel.groupModel.footerLabelColor;
  131. }
  132. }
  133. }
  134. - (UILabel *)headerContentLabel {
  135. if (!_headerContentLabel) {
  136. _headerContentLabel = [[UILabel alloc] init];
  137. _headerContentLabel.textColor = RQ_MAIN_TEXT_COLOR_1;
  138. _headerContentLabel.font = RQSemiboldFont(19);
  139. _headerContentLabel.numberOfLines = 0;
  140. _headerContentLabel.textAlignment = NSTextAlignmentLeft;
  141. }
  142. return _headerContentLabel;
  143. }
  144. - (UILabel *)footerContentLabel {
  145. if (!_footerContentLabel) {
  146. _footerContentLabel = [[UILabel alloc] init];
  147. _footerContentLabel.textColor = RQ_MAIN_TEXT_COLOR_1;
  148. _footerContentLabel.font = RQSemiboldFont(19);
  149. _footerContentLabel.numberOfLines = 0;
  150. _footerContentLabel.textAlignment = NSTextAlignmentLeft;
  151. }
  152. return _footerContentLabel;
  153. }
  154. - (UIView *)line {
  155. if (!_line) {
  156. _line = [[UIView alloc] init];
  157. _line.backgroundColor = RQ_MAIN_BACKGROUNDCOLOR;
  158. }
  159. return _line;
  160. }
  161. @end