// // RQCommonReusableView.m // YueXueChe // // Created by 张嵘 on 2018/12/19. // Copyright © 2018 lee. All rights reserved. // #import "RQCommonReusableView.h" #import "RQCommonGroupViewModel.h" @interface RQCommonReusableView () /// viewModel @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *viewModel; @property (nonatomic, readwrite, strong) UIView *line; @property (nonatomic, readwrite, strong) NSString *kind; @end @implementation RQCommonReusableView + (instancetype)reusableViewWithCollectionView:(UICollectionView *)collectionView OfKind:(NSString *)elementKind forIndexPath:(NSIndexPath *)indexPath { NSString *ID = [NSString stringWithFormat:@"%@%@", @"CommonReusableView",elementKind]; [collectionView registerClass:[RQCommonReusableView class] forSupplementaryViewOfKind:elementKind withReuseIdentifier:ID]; RQCommonReusableView *reusableView = [collectionView dequeueReusableSupplementaryViewOfKind:elementKind withReuseIdentifier:ID forIndexPath:indexPath]; if (elementKind == UICollectionElementKindSectionHeader) { reusableView.backgroundColor = RQ_LIST_BACKGROUNDCOLOR; reusableView.headerContentLabel.hidden = NO; reusableView.footerContentLabel.hidden = YES; }else { reusableView.backgroundColor = RQ_LIST_BACKGROUNDCOLOR; reusableView.headerContentLabel.hidden = YES; reusableView.footerContentLabel.hidden = NO; } return reusableView; } - (void)bindViewModel:(RQCommonGroupViewModel *)viewModel { self.viewModel = viewModel; if (viewModel.groupModel) { if ([self.reuseIdentifier containsString:UICollectionElementKindSectionHeader]) { if (!RQObjectIsNil(self.viewModel.groupModel.headerBgColor)) { self.backgroundColor = self.viewModel.groupModel.headerLabelColor; } if (RQStringIsNotEmpty(self.viewModel.groupModel.header)) { [self initHeaderView]; self.headerContentLabel.hidden = NO; } } else if ([self.reuseIdentifier containsString:UICollectionElementKindSectionFooter]) { if (!RQObjectIsNil(self.viewModel.groupModel.footerBgColor)) { self.backgroundColor = self.viewModel.groupModel.footerBgColor; } if (RQStringIsNotEmpty(self.viewModel.groupModel.footer)) { [self initFooterView]; self.footerContentLabel.hidden = NO; } } } else { if (viewModel.header && viewModel.footer) { [self initHeaderView]; [self initFooterView]; self.headerContentLabel.hidden = NO; self.footerContentLabel.hidden = NO; } else if (viewModel.header || viewModel.footer) { if (viewModel.header && !viewModel.footer) { [self initHeaderView]; self.headerContentLabel.hidden = NO; self.footerContentLabel.hidden = YES; }else if (!viewModel.header && viewModel.footer) { [self initFooterView]; self.headerContentLabel.hidden = YES; self.footerContentLabel.hidden = NO; } } else { self.headerContentLabel.hidden = YES; self.footerContentLabel.hidden = YES; } } } - (void)initHeaderView { @weakify(self) [self addSubview:self.headerContentLabel]; [_headerContentLabel mas_makeConstraints:^(MASConstraintMaker *make) { @strongify(self) make.centerY.mas_equalTo(self); make.left.mas_equalTo(self).mas_equalTo(11.f); make.right.mas_equalTo(self).mas_equalTo(-11.f); }]; [self addSubview:self.line]; [_line mas_makeConstraints:^(MASConstraintMaker *make) { @strongify(self) make.left.right.bottom.mas_equalTo(self); make.height.mas_offset(1); }]; if (RQObjectIsNil(self.viewModel.groupModel)) { _headerContentLabel.text = self.viewModel.header; _headerContentLabel.font = self.viewModel.headerFont; } else { if (RQStringIsNotEmpty(self.viewModel.groupModel.header)) { _headerContentLabel.text = self.viewModel.groupModel.header; } if (!RQObjectIsNil(self.viewModel.groupModel.headerFont)) { _headerContentLabel.font = self.viewModel.groupModel.headerFont; } if (!RQObjectIsNil(self.viewModel.groupModel.headerLabelColor)) { _headerContentLabel.textColor = self.viewModel.groupModel.headerLabelColor; } } } - (void)initFooterView { @weakify(self) [self addSubview:self.footerContentLabel]; [_footerContentLabel mas_makeConstraints:^(MASConstraintMaker *make) { @strongify(self) make.centerY.mas_equalTo(self); make.left.mas_equalTo(self).mas_equalTo(11.f); make.right.mas_equalTo(self).mas_equalTo(-11.f); }]; [self addSubview:self.line]; [_line mas_makeConstraints:^(MASConstraintMaker *make) { @strongify(self) make.left.right.bottom.mas_equalTo(self); make.height.mas_offset(1); }]; if (RQObjectIsNil(self.viewModel.groupModel)) { _footerContentLabel.text = self.viewModel.footer; _footerContentLabel.font = self.viewModel.footerFont; } else { if (RQStringIsNotEmpty(self.viewModel.groupModel.footer)) { _footerContentLabel.text = self.viewModel.groupModel.footer; } if (!RQObjectIsNil(self.viewModel.groupModel.footerFont)) { _footerContentLabel.font = self.viewModel.groupModel.footerFont; } if (!RQObjectIsNil(self.viewModel.groupModel.headerLabelColor)) { _footerContentLabel.textColor = self.viewModel.groupModel.footerLabelColor; } } } - (UILabel *)headerContentLabel { if (!_headerContentLabel) { _headerContentLabel = [[UILabel alloc] init]; _headerContentLabel.textColor = RQ_MAIN_TEXT_COLOR_1; _headerContentLabel.font = RQSemiboldFont(19); _headerContentLabel.numberOfLines = 0; _headerContentLabel.textAlignment = NSTextAlignmentLeft; } return _headerContentLabel; } - (UILabel *)footerContentLabel { if (!_footerContentLabel) { _footerContentLabel = [[UILabel alloc] init]; _footerContentLabel.textColor = RQ_MAIN_TEXT_COLOR_1; _footerContentLabel.font = RQSemiboldFont(19); _footerContentLabel.numberOfLines = 0; _footerContentLabel.textAlignment = NSTextAlignmentLeft; } return _footerContentLabel; } - (UIView *)line { if (!_line) { _line = [[UIView alloc] init]; _line.backgroundColor = RQ_MAIN_BACKGROUNDCOLOR; } return _line; } @end