// // KBSvipSubscribeCell.m // keyBoard // // SVIP 订阅选项样式,使用背景图片切换选中状态 // #import "KBSvipSubscribeCell.h" @interface KBSvipSubscribeCell () @property (nonatomic, strong) UIImageView *bgImageView; // 背景图片 @property (nonatomic, strong) UILabel *titleLabel; // "1 Week" / "1 Month" / "1 Year" @property (nonatomic, strong) UILabel *priceLabel; // "$6.90" @property (nonatomic, strong) UILabel *strikeLabel; // 删除线原价 @end @implementation KBSvipSubscribeCell - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { self.contentView.backgroundColor = [UIColor clearColor]; [self.contentView addSubview:self.bgImageView]; [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.contentView); }]; [self.contentView addSubview:self.titleLabel]; [self.contentView addSubview:self.priceLabel]; [self.contentView addSubview:self.strikeLabel]; [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.contentView); make.top.equalTo(self.contentView).offset(12); }]; [self.priceLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.contentView); make.top.equalTo(self.titleLabel.mas_bottom).offset(8); }]; [self.strikeLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.contentView); make.top.equalTo(self.priceLabel.mas_bottom).offset(4); }]; } return self; } - (void)prepareForReuse { [super prepareForReuse]; [self applySelected:NO animated:NO]; } - (void)setSelected:(BOOL)selected { [super setSelected:selected]; [self applySelected:selected animated:NO]; } - (void)configTitle:(NSString *)title price:(NSString *)price strike:(nullable NSString *)strike { self.titleLabel.text = title.length ? title : @"1 Month"; self.priceLabel.text = price.length ? price : @"$6.90"; self.strikeLabel.hidden = (strike.length == 0); if (strike.length) { NSDictionary *attr = @{ NSStrikethroughStyleAttributeName: @(NSUnderlineStyleSingle), NSForegroundColorAttributeName: [UIColor colorWithHex:0x999999] }; self.strikeLabel.attributedText = [[NSAttributedString alloc] initWithString:strike attributes:attr]; } } - (void)applySelected:(BOOL)selected animated:(BOOL)animated { NSString *imageName = selected ? @"pay_colorbg_icon" : @"pay_graybg_icon"; void (^changes)(void) = ^{ self.bgImageView.image = [UIImage imageNamed:imageName]; }; if (animated) { [UIView transitionWithView:self.bgImageView duration:0.2 options:UIViewAnimationOptionTransitionCrossDissolve animations:changes completion:nil]; } else { changes(); } } #pragma mark - Lazy - (UIImageView *)bgImageView { if (!_bgImageView) { _bgImageView = [UIImageView new]; _bgImageView.contentMode = UIViewContentModeScaleAspectFill; _bgImageView.image = [UIImage imageNamed:@"pay_graybg_icon"]; } return _bgImageView; } - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [UILabel new]; _titleLabel.text = @"1 Month"; _titleLabel.textColor = [UIColor colorWithHex:KBBlackValue]; _titleLabel.font = [KBFont medium:13]; } return _titleLabel; } - (UILabel *)priceLabel { if (!_priceLabel) { _priceLabel = [UILabel new]; _priceLabel.text = @"$6.90"; _priceLabel.textColor = [UIColor colorWithHex:KBBlackValue]; _priceLabel.font = [KBFont bold:22]; } return _priceLabel; } - (UILabel *)strikeLabel { if (!_strikeLabel) { _strikeLabel = [UILabel new]; _strikeLabel.text = @"$4.49"; _strikeLabel.font = [KBFont regular:12]; _strikeLabel.textColor = [UIColor colorWithHex:0x999999]; } return _strikeLabel; } @end