CNLiveMineCell.m 12.7 KB
//
//  CNLiveMineCell.m
//  CNLiveMineModule
//
//  Created by 153993236@qq.com on 11/12/2019.
//  Copyright © 2019 153993236@qq.com. All rights reserved.
//

#import "CNLiveMineCell.h"
#import <Masonry/Masonry.h>
#import "QMUIKit.h"

#define HexColor(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

@interface CNLiveMineCell()
@property (nonatomic, strong) UIView *bgView;
@property (nonatomic, strong) UIButton *titleButton;

@property (nonatomic, strong) UIView *line;

@end

@implementation CNLiveMineCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        self.contentView.backgroundColor = HexColor(0xf4f4f4);
        [self xw_layoutSubviews];
    }
    return self;
}
- (void)xw_layoutSubviews{
    self.bgView = [[UIView alloc] init];
    _bgView.backgroundColor = [UIColor whiteColor];
    _bgView.layer.masksToBounds = YES;
    _bgView.layer.cornerRadius = 5;
    [self.contentView addSubview:self.bgView];
    
    self.titleButton = [UIButton buttonWithType:UIButtonTypeCustom];
    _titleButton.titleLabel.font = [UIFont boldSystemFontOfSize:16];
    [_titleButton setTitleColor:[UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0] forState:UIControlStateNormal];
    _titleButton.adjustsImageWhenHighlighted = NO;
//    [_titleButton addTarget:self action:@selector(btnDidClicked:) forControlEvents:UIControlEventTouchUpInside];
   [self.contentView addSubview:self.titleButton];
    
    self.line = [[UIView alloc] init];
    _line.backgroundColor = HexColor(0xebebeb);
    [self.contentView addSubview:self.line];
    
    
}
- (void)setModel:(CNLiveMineModel *)model{
    _model = model;
    [_titleButton setTitle:model.name forState:UIControlStateNormal];
    UIImage *xw_image = [self xw_getImageName:model.pic bundle:@"CNLiveMineModule" targetClass:[CNLiveMineCell class]];
    [_titleButton setImage:xw_image forState:UIControlStateNormal];
    
    switch (model.type) {
        case CNLiveMineCellTypeOrder:
        {
            [self order_layoutSubviews];
        }
            break;
            
        case CNLiveMineCellTypeTool:
        {
            [self tool_layoutSubviews];
        }
            break;
            
        case CNLiveMineCellTypeGoods:
        {
            [self goods_layoutSubviews];
        }
            break;
            
        case CNLiveMineCellTypeSports:
        {
            [self sports_layoutSubviews];
        }
            break;
    }
}

- (void)order_layoutSubviews{
    [_bgView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.contentView.mas_right).with.offset(-self.model.margin);
        make.top.equalTo(self.contentView.mas_top).with.offset(0);
        make.bottom.equalTo(self.contentView.mas_bottom).with.offset(-self.model.margin);
        
    }];
    [_titleButton setImage:nil forState:UIControlStateNormal];
    _titleButton.titleLabel.textAlignment = NSTextAlignmentLeft;
    _titleButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;//使图片和文字水平居中显示
    [_titleButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.bgView.mas_top).with.offset(0);
        make.left.equalTo(self.bgView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.bgView.mas_right).with.offset(-self.model.margin);
        make.height.with.offset(50);
        
    }];
    [_line mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.titleButton.mas_bottom).with.offset(0);
        make.left.equalTo(self.bgView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.bgView.mas_right).with.offset(-self.model.margin);
        make.height.with.offset(0.5);
        
    }];

    CGFloat width = SCREEN_WIDTH-2*self.model.margin;
    CGFloat btnWidth = width/self.model.titles.count*1.0;
    CGFloat btnHeight = 60;
    
    for(int i = 0; i < self.model.titles.count; i++){
        UIButton *btn = [self createButtonWithFrame:CGRectMake(self.model.margin+btnWidth*i, 50+self.model.margin, btnWidth, btnHeight) title:self.model.titles[i] image:self.model.images[i] tag:10000+i];
        [self addSubview:btn];
        
    }
    
}
- (void)tool_layoutSubviews{
    [_bgView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.contentView.mas_right).with.offset(-self.model.margin);
        make.top.equalTo(self.contentView.mas_top).with.offset(0);
        make.bottom.equalTo(self.contentView.mas_bottom).with.offset(-self.model.margin);
        
    }];
    [_titleButton setImage:nil forState:UIControlStateNormal];
    _titleButton.titleLabel.textAlignment = NSTextAlignmentLeft;
    _titleButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;//使图片和文字水平居中显示
    [_titleButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.bgView.mas_top).with.offset(0);
        make.left.equalTo(self.bgView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.bgView.mas_right).with.offset(-self.model.margin);
        make.height.with.offset(50);
        
    }];
    [_line mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.titleButton.mas_bottom).with.offset(0);
        make.left.equalTo(self.bgView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.bgView.mas_right).with.offset(-self.model.margin);
        make.height.with.offset(0.5);
        
    }];

    CGFloat width = SCREEN_WIDTH-2*self.model.margin;
    
    CGFloat btnWidth = width/4.0;
    CGFloat btnHeight = 60;
    
    for(int i = 0; i < self.model.titles.count; i++){
        NSInteger row = i % 4;
        NSInteger col = floorf(i / 4.0);
        UIButton *btn = [self createButtonWithFrame:CGRectMake(self.model.margin+btnWidth*row, (col*(btnHeight+self.model.margin))+50+self.model.margin, btnWidth, btnHeight) title:self.model.titles[i] image:self.model.images[i] tag:10000+i];
        [self addSubview:btn];

    }
}
- (void)goods_layoutSubviews{
    //图片相对于button的偏移量
    [_titleButton setImageEdgeInsets:UIEdgeInsetsMake(0, -self.model.margin/2.0, 0, 0)];
    //文字相对于图片的偏移量
    [_titleButton setTitleEdgeInsets:UIEdgeInsetsMake(0, self.model.margin/2.0, 0, 0)];
    
    [_bgView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.contentView.mas_right).with.offset(-self.model.margin);
        make.top.equalTo(self.contentView.mas_top).with.offset(0);
        make.bottom.equalTo(self.contentView.mas_bottom).with.offset(-self.model.margin);
        
    }];
    _titleButton.titleLabel.textAlignment = NSTextAlignmentCenter;
    _titleButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;//使图片和文字水平居中显示
    [_titleButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.bgView.mas_top).with.offset(0);
        make.left.equalTo(self.bgView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.bgView.mas_right).with.offset(-self.model.margin);
        make.height.with.offset(50);
        
    }];
    [_line mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.titleButton.mas_bottom).with.offset(0);
        make.left.equalTo(self.bgView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.bgView.mas_right).with.offset(-self.model.margin);
        make.height.with.offset(0.5);
        
    }];
    CGFloat width = SCREEN_WIDTH-2*self.model.margin;
    CGFloat btnWidth = width/4.0;
    CGFloat btnHeight = 80;
    
    // 电子票
    UIButton *btn = [self createButtonWithFrame:CGRectMake((width-btnWidth)/2.0, self.model.margin+50, btnWidth, btnHeight) title:self.model.titles[0] image:self.model.images[0] tag:10000];
    [self addSubview:btn];
    
}
- (void)sports_layoutSubviews{
    //图片相对于button的偏移量
    [_titleButton setImageEdgeInsets:UIEdgeInsetsMake(0, -self.model.margin/2.0, 0, 0)];
    //文字相对于图片的偏移量
    [_titleButton setTitleEdgeInsets:UIEdgeInsetsMake(0, self.model.margin/2.0, 0, 0)];

    [_bgView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.contentView.mas_right).with.offset(-self.model.margin);
        make.top.equalTo(self.contentView.mas_top).with.offset(0);
        make.bottom.equalTo(self.contentView.mas_bottom).with.offset(-self.model.margin);
    
    }];
    _titleButton.titleLabel.textAlignment = NSTextAlignmentCenter;
    _titleButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;//使图片和文字水平居中显示
    [_titleButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.bgView.mas_top).with.offset(0);
        make.left.equalTo(self.bgView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.bgView.mas_right).with.offset(-self.model.margin);
        make.height.with.offset(50);
        
    }];
    [_line mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.titleButton.mas_bottom).with.offset(0);
        make.left.equalTo(self.bgView.mas_left).with.offset(self.model.margin);
        make.right.equalTo(self.bgView.mas_right).with.offset(-self.model.margin);
        make.height.with.offset(0.5);
        
    }];
    
    CGFloat width = SCREEN_WIDTH-2*self.model.margin;
    
    CGFloat btnWidth = width/4.0;
    CGFloat btnHeight = 60;
    
    for(int i = 0; i < self.model.titles.count; i++){
        NSInteger row = i % 4;
        NSInteger col = floorf(i / 4.0);
        UIButton *btn = [self createButtonWithFrame:CGRectMake(self.model.margin+btnWidth*row, (col*(btnHeight+self.model.margin))+50+self.model.margin, btnWidth, btnHeight) title:self.model.titles[i] image:self.model.images[i] tag:10000+i];
        [self addSubview:btn];
        
    }
}

- (UIButton *)createButtonWithFrame:(CGRect)frame title:(NSString *)title image:(NSString *)image tag:(NSInteger)tag{
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.tag = tag;
    btn.frame = frame;
    btn.titleLabel.font = [UIFont systemFontOfSize:14];
    btn.titleLabel.textAlignment = NSTextAlignmentCenter;
    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;//使图片和文字水平居中显示
    
    [btn setTitle:title forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    UIImage *xw_image = [self xw_getImageName:image bundle:@"CNLiveMineModule" targetClass:[CNLiveMineCell class]];
    [btn setImage:xw_image forState:UIControlStateNormal];
    btn.adjustsImageWhenHighlighted = NO;
    [btn addTarget:self action:@selector(btnDidClicked:) forControlEvents:UIControlEventTouchUpInside];
    btn.titleEdgeInsets = UIEdgeInsetsMake(btn.imageView.frame.size.height+self.model.margin, -btn.imageView.frame.size.width, 0, 0);
    btn.imageEdgeInsets = UIEdgeInsetsMake(-btn.titleLabel.bounds.size.height, 0, self.model.margin, -btn.titleLabel.bounds.size.width);
    return btn;
    
}

- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    
    // Configure the view for the selected state
}

- (void)btnDidClicked:(UIButton *)btn{
    if (self.delegate && [self.delegate respondsToSelector:@selector(cell:clickedButtonWithType:tag:)]) {
        [self.delegate cell:self clickedButtonWithType:self.model.type tag:btn.tag];
    }
}

/**
 *  创建图片
 *
 *  @param imageName 图片名字
 *  @param bundleName 图片所在的bundle名字
 *  @param targetClass 类和bundle的同级目录
 *  @return 返回UIImage
 */
- (UIImage *)xw_getImageName:(NSString *)imageName bundle:(NSString *)bundleName targetClass:(Class)targetClass{
    NSBundle *bundle = [NSBundle bundleForClass:targetClass];
    NSURL *url = [bundle URLForResource:bundleName withExtension:@"bundle"];
    NSBundle *targetBundle = [NSBundle bundleWithURL:url];
    UIImage *image = [UIImage imageNamed:imageName inBundle:targetBundle compatibleWithTraitCollection:nil];
    return image?image:[UIImage imageNamed:imageName inBundle:[NSBundle mainBundle] compatibleWithTraitCollection:nil];
    
}

@end