RQCommonHeaderView.m 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //
  2. // RQCommonHeaderView.m
  3. // RQCommon
  4. //
  5. // Created by 张嵘 on 2018/11/27.
  6. // Copyright © 2018 张嵘. All rights reserved.
  7. //
  8. #import "RQCommonHeaderView.h"
  9. #import "RQCommonGroupViewModel.h"
  10. @interface RQCommonHeaderView ()
  11. /// viewModel
  12. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *viewModel;
  13. /// contentLabel
  14. @property (nonatomic, readwrite, weak) UILabel *contentLabel;
  15. @end
  16. @implementation RQCommonHeaderView
  17. #pragma mark - 公共方法
  18. + (instancetype)headerViewWithTableView:(UITableView *)tableView{
  19. static NSString *ID = @"CommonHeader";
  20. RQCommonHeaderView *header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
  21. if (header == nil) {
  22. // 缓存池中没有, 自己创建
  23. header = [[self alloc] initWithReuseIdentifier:ID];
  24. }
  25. return header;
  26. }
  27. - (void)bindViewModel:(RQCommonGroupViewModel *)viewModel {
  28. self.viewModel = viewModel;
  29. if (viewModel.groupModel) {
  30. if (!RQObjectIsNil(self.viewModel.groupModel.headerBgColor)) {
  31. self.contentView.backgroundColor = self.viewModel.groupModel.headerBgColor;
  32. if (self.viewModel.groupModel.headerBgColor == UIColor.clearColor) {
  33. self.hidden = YES;
  34. } else {
  35. self.hidden = NO;
  36. }
  37. }
  38. if (RQStringIsNotEmpty(self.viewModel.groupModel.header)) {
  39. self.hidden = NO;
  40. self.contentLabel.text = self.viewModel.groupModel.header;
  41. if (!RQObjectIsNil(self.viewModel.groupModel.headerFont)) {
  42. self.contentLabel.font = self.viewModel.groupModel.headerFont;
  43. }
  44. if (!RQObjectIsNil(self.viewModel.groupModel.headerLabelColor)) {
  45. self.contentLabel.textColor = self.viewModel.groupModel.headerLabelColor;
  46. }
  47. [self.contentLabel mas_updateConstraints:^(MASConstraintMaker *make) {
  48. make.size.mas_equalTo(CGSizeMake(RQ_SCREEN_WIDTH - 40, self.viewModel.groupModel.headerHeight));
  49. }];
  50. }
  51. } else {
  52. self.contentLabel.text = viewModel.header;
  53. }
  54. }
  55. #pragma mark - 私有方法
  56. - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
  57. {
  58. if (self = [super initWithReuseIdentifier:reuseIdentifier]) {
  59. // 初始化
  60. [self _setup];
  61. // 创建自控制器
  62. [self _setupSubViews];
  63. // 布局子控件
  64. [self _makeSubViewsConstraints];
  65. }
  66. return self;
  67. }
  68. #pragma mark - 初始化
  69. - (void)_setup{
  70. self.contentView.backgroundColor = RQ_LIST_BACKGROUNDCOLOR;
  71. }
  72. #pragma mark - 创建自控制器
  73. - (void)_setupSubViews{
  74. // label
  75. UILabel *contentLabel = [[UILabel alloc] init];
  76. contentLabel.textColor = RQColorFromHexString(@"#888888");
  77. contentLabel.font = RQRegularFont_14;
  78. contentLabel.numberOfLines = 0;
  79. contentLabel.textAlignment = NSTextAlignmentLeft;
  80. [self.contentView addSubview:contentLabel];
  81. self.contentLabel = contentLabel;
  82. }
  83. #pragma mark - 布局子控件
  84. - (void)_makeSubViewsConstraints
  85. {
  86. @weakify(self)
  87. [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  88. @strongify(self)
  89. make.left.mas_equalTo(self.contentView).mas_offset(20);
  90. make.centerY.mas_equalTo(self.contentView);
  91. make.size.mas_equalTo(CGSizeMake(RQ_SCREEN_WIDTH - 40, self.contentView.height));
  92. }];
  93. }
  94. @end