RQCommonReusableView.m 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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:@"%@%@%ld", @"CommonReusableView",elementKind,indexPath.section];
  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_MAIN_BACKGROUNDCOLOR;
  23. }else {
  24. reusableView.backgroundColor = RQ_MAIN_BACKGROUNDCOLOR;
  25. }
  26. return reusableView;
  27. }
  28. - (void)bindViewModel:(RQCommonGroupViewModel *)viewModel {
  29. self.viewModel = viewModel;
  30. if (viewModel.groupModel) {
  31. if ([self.reuseIdentifier containsString:UICollectionElementKindSectionHeader]) {
  32. if (!RQObjectIsNil(self.viewModel.groupModel.headerBgColor)) {
  33. self.backgroundColor = self.viewModel.groupModel.headerLabelColor;
  34. }
  35. if (RQStringIsNotEmpty(self.viewModel.groupModel.header)) {
  36. [self initHeaderView];
  37. self.headerContentLabel.hidden = NO;
  38. }
  39. } else if ([self.reuseIdentifier containsString:UICollectionElementKindSectionFooter]) {
  40. if (!RQObjectIsNil(self.viewModel.groupModel.footerBgColor)) {
  41. self.backgroundColor = self.viewModel.groupModel.footerBgColor;
  42. }
  43. if (RQStringIsNotEmpty(self.viewModel.groupModel.footer)) {
  44. [self initFooterView];
  45. self.footerContentLabel.hidden = NO;
  46. }
  47. }
  48. } else {
  49. if (viewModel.header && viewModel.footer) {
  50. [self initHeaderView];
  51. [self initFooterView];
  52. self.headerContentLabel.hidden = NO;
  53. self.footerContentLabel.hidden = NO;
  54. } else if (viewModel.header || viewModel.footer) {
  55. if (viewModel.header && !viewModel.footer) {
  56. [self initHeaderView];
  57. self.headerContentLabel.hidden = NO;
  58. self.footerContentLabel.hidden = YES;
  59. }else if (!viewModel.header && viewModel.footer) {
  60. [self initFooterView];
  61. self.headerContentLabel.hidden = YES;
  62. self.footerContentLabel.hidden = NO;
  63. }
  64. } else {
  65. self.headerContentLabel.hidden = YES;
  66. self.footerContentLabel.hidden = YES;
  67. }
  68. }
  69. }
  70. - (void)initHeaderView {
  71. [self addSubview:self.headerContentLabel];
  72. [_headerContentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  73. make.centerY.mas_equalTo(self);
  74. make.left.mas_equalTo(self).mas_equalTo(11.f);
  75. make.right.mas_equalTo(self).mas_equalTo(-11.f);
  76. }];
  77. [self addSubview:self.line];
  78. [_line mas_makeConstraints:^(MASConstraintMaker *make) {
  79. make.left.right.bottom.mas_equalTo(self);
  80. make.height.mas_offset(1);
  81. }];
  82. if (RQObjectIsNil(self.viewModel.groupModel)) {
  83. _headerContentLabel.text = self.viewModel.header;
  84. } else {
  85. if (RQStringIsNotEmpty(self.viewModel.groupModel.header)) {
  86. _headerContentLabel.text = self.viewModel.groupModel.header;
  87. }
  88. if (!RQObjectIsNil(self.viewModel.groupModel.headerFont)) {
  89. _headerContentLabel.font = self.viewModel.groupModel.headerFont;
  90. }
  91. if (!RQObjectIsNil(self.viewModel.groupModel.headerLabelColor)) {
  92. _headerContentLabel.textColor = self.viewModel.groupModel.headerLabelColor;
  93. }
  94. }
  95. }
  96. - (void)initFooterView {
  97. [self addSubview:self.footerContentLabel];
  98. [_footerContentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  99. make.centerY.mas_equalTo(self);
  100. make.left.mas_equalTo(self).mas_equalTo(11.f);
  101. make.right.mas_equalTo(self).mas_equalTo(-11.f);
  102. }];
  103. [self addSubview:self.line];
  104. [_line mas_makeConstraints:^(MASConstraintMaker *make) {
  105. make.left.right.bottom.mas_equalTo(self);
  106. make.height.mas_offset(1);
  107. }];
  108. if (RQObjectIsNil(self.viewModel.groupModel)) {
  109. _footerContentLabel.text = self.viewModel.footer;
  110. } else {
  111. if (RQStringIsNotEmpty(self.viewModel.groupModel.footer)) {
  112. _footerContentLabel.text = self.viewModel.groupModel.footer;
  113. }
  114. if (!RQObjectIsNil(self.viewModel.groupModel.footerFont)) {
  115. _footerContentLabel.font = self.viewModel.groupModel.footerFont;
  116. }
  117. if (!RQObjectIsNil(self.viewModel.groupModel.headerLabelColor)) {
  118. _footerContentLabel.textColor = self.viewModel.groupModel.footerLabelColor;
  119. }
  120. }
  121. }
  122. - (UILabel *)headerContentLabel {
  123. if (!_headerContentLabel) {
  124. _headerContentLabel = [[UILabel alloc] init];
  125. _headerContentLabel.textColor = RQ_MAIN_TEXT_COLOR_1;
  126. _headerContentLabel.font = RQRegularFont_17;
  127. _headerContentLabel.numberOfLines = 0;
  128. _headerContentLabel.textAlignment = NSTextAlignmentLeft;
  129. }
  130. return _headerContentLabel;
  131. }
  132. - (UILabel *)footerContentLabel {
  133. if (!_footerContentLabel) {
  134. _footerContentLabel = [[UILabel alloc] init];
  135. _footerContentLabel.textColor = RQColorFromHexString(@"#0B1B27");
  136. _footerContentLabel.font = RQRegularFont_17;
  137. _footerContentLabel.numberOfLines = 0;
  138. _footerContentLabel.textAlignment = NSTextAlignmentLeft;
  139. }
  140. return _footerContentLabel;
  141. }
  142. - (UIView *)line {
  143. if (!_line) {
  144. _line = [[UIView alloc] init];
  145. _line.backgroundColor = RQ_MAIN_BACKGROUNDCOLOR;
  146. }
  147. return _line;
  148. }
  149. @end