// // RQCommonCell.m // RQCommon // // Created by 张嵘 on 2018/11/27. // Copyright © 2018 张嵘. All rights reserved. // #import "RQCommonCell.h" #import "RQCommonArrowItemViewModel.h" #import "RQCommonAvatarItemViewModel.h" #import "RQCommonQRCodeItemViewModel.h" #import "RQCommonLabelItemViewModel.h" #import "RQCommonSwitchItemViewModel.h" @interface RQCommonCell () /// viewModel @property (nonatomic, readwrite, strong) RQCommonItemViewModel *viewModel; /// 箭头 @property (nonatomic, readwrite, strong) UIImageView *rightArrow; /// 开光 @property (nonatomic, readwrite, strong) UISwitch *rightSwitch; /// 标签 @property (nonatomic, readwrite, strong) UILabel *rightLabel; /// avatar 头像 @property (nonatomic, readwrite, weak) UIImageView *avatarView; /// QrCode @property (nonatomic, readwrite, weak) UIImageView *qrCodeView; /// 三条分割线 @property (nonatomic, readwrite, weak) UIImageView *divider0; @property (nonatomic, readwrite, weak) UIImageView *divider1; @property (nonatomic, readwrite, weak) UIImageView *divider2; /// 中间偏左 view @property (nonatomic, readwrite, weak) UIImageView *centerLeftView; /// 中间偏右 view @property (nonatomic, readwrite, weak) UIImageView *centerRightView; @end @implementation RQCommonCell #pragma mark - 公共方法 + (instancetype)cellWithTableView:(UITableView *)tableView{ return [self cellWithTableView:tableView style:UITableViewCellStyleValue1]; } + (instancetype)cellWithTableView:(UITableView *)tableView style:(UITableViewCellStyle)style{ static NSString *ID = @"CommonCell"; RQCommonCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (!cell) { cell = [[self alloc] initWithStyle:style reuseIdentifier:ID]; } return cell; } - (void)setIndexPath:(NSIndexPath *)indexPath rowsInSection:(NSInteger)rows{ self.divider0.hidden = NO; self.divider1.hidden = NO; self.divider2.hidden = NO; if (rows == 1) { /// 一段 self.divider1.hidden = YES; }else if(indexPath.row == 0) { /// 首行 self.divider2.hidden = YES; }else if(indexPath.row == rows-1) { /// 末行 self.divider1.hidden = YES; self.divider0.hidden = YES; }else{ /// 中间行 self.divider1.hidden = NO; self.divider0.hidden = YES; self.divider2.hidden = YES; } } - (void)bindViewModel:(RQCommonItemViewModel *)viewModel{ @weakify(self) self.viewModel = viewModel; self.avatarView.hidden = YES; self.qrCodeView.hidden = YES; self.selectionStyle = viewModel.selectionStyle; self.textLabel.text = viewModel.title; self.imageView.image = (RQStringIsNotEmpty(viewModel.icon))?RQImageNamed(viewModel.icon):nil; self.detailTextLabel.text = viewModel.subtitle; /// 设置全新 if (RQStringIsNotEmpty(viewModel.centerLeftViewName)) { self.centerLeftView.hidden = NO; self.centerLeftView.image = RQImageNamed(viewModel.centerLeftViewName); self.centerLeftView.rq_size = self.centerLeftView.image.size; }else{ self.centerLeftView.hidden = YES;; } /// 设置锁 if (RQStringIsNotEmpty(viewModel.centerRightViewName)) { self.centerRightView.hidden = NO; self.centerRightView.image = RQImageNamed(viewModel.centerRightViewName); self.centerRightView.rq_size = self.centerRightView.image.size; }else{ self.centerRightView.hidden = YES;; } if ([viewModel isKindOfClass:[RQCommonArrowItemViewModel class]]) { /// 纯带箭头 self.accessoryView = self.rightArrow; if ([viewModel isKindOfClass:[RQCommonAvatarItemViewModel class]]) { // 头像 RQCommonAvatarItemViewModel *avatarViewModel = (RQCommonAvatarItemViewModel *)viewModel; self.avatarView.hidden = NO; [self.avatarView yy_setImageWithURL:[NSURL URLWithString:avatarViewModel.avatar] placeholder:RQWebAvatarImagePlaceholder() options:RQWebImageOptionAutomatic completion:^(UIImage * _Nullable image, NSURL * _Nonnull url, YYWebImageFromType from, YYWebImageStage stage, NSError * _Nullable error) { @strongify(self) self.avatarView.layer.cornerRadius = self.avatarView.width / 2.f; self.avatarView.clipsToBounds = YES; }]; }else if ([viewModel isKindOfClass:[RQCommonQRCodeItemViewModel class]]){ // 二维码 self.qrCodeView.hidden = NO; } }else if([viewModel isKindOfClass:[RQCommonSwitchItemViewModel class]]){ /// 开关 // 右边显示开关 RQCommonSwitchItemViewModel *switchViewModel = (RQCommonSwitchItemViewModel *)viewModel; self.accessoryView = self.rightSwitch; self.rightSwitch.on = !switchViewModel.off; }else{ self.accessoryView = nil; } } #pragma mark - 私有方法 - (void)awakeFromNib { [super awakeFromNib]; } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; } - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]){ // 初始化 [self _setup]; // 创建自控制器 [self _setupSubViews]; // 布局子控件 [self _makeSubViewsConstraints]; } return self; } #pragma mark - 初始化 - (void)_setup{ self.contentView.backgroundColor = [UIColor whiteColor]; self.textLabel.textColor = RQ_MAIN_TEXT_COLOR_1; self.textLabel.font = RQRegularFont_17; self.detailTextLabel.textColor = RQ_MAIN_COLOR; self.detailTextLabel.numberOfLines = 0; self.detailTextLabel.font = RQRegularFont_15; } #pragma mark - 创建自控制器 - (void)_setupSubViews{ /// CoderMikeHe Fixed : 这里需要把divider添加到self,而不是self.contentView ,由于添加了 accessView,导致self.contentView的宽度