您的位置:首页 > 编程语言

自定义等高的cell(代码创建frame)

2016-02-05 20:04 387 查看
//
//  tgCell.h

#import <UIKit/UIKit.h>

@class tgModel;

@interface tgCell : UITableViewCell
/**
*  团购模型数据
*/
@property(nonatomic,strong)tgModel *model;

/**
*  创建一个cell
*/
+ (instancetype)cellWithTableView:(UITableView *)tableView;
@end
//
//  tgCell.m

#import "tgCell.h"
#import "tgModel.h"

@interface tgCell()
@property (weak, nonatomic) UIImageView *iconView;
@property (weak, nonatomic) UILabel *titleLabel;
@property (weak, nonatomic) UILabel *priceLabel;
@property (weak, nonatomic) UILabel *buyCountLabel;

@end

@implementation tgCell

// 1.在initWithStyle:reuseIdentifier:方法中添加子控件
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
UIImageView *iconView = [[UIImageView alloc] init];
[self.contentView addSubview:iconView];
self.iconView = iconView;

UILabel *titleLabel = [[UILabel alloc] init];
[self.contentView addSubview:titleLabel];
self.titleLabel = titleLabel;

UILabel *priceLabel = [[UILabel alloc] init];
priceLabel.textColor = [UIColor orangeColor];
[self.contentView addSubview:priceLabel];
self.priceLabel = priceLabel;

UILabel *buyCountLabel = [[UILabel alloc] init];
buyCountLabel.textAlignment = NSTextAlignmentRight;
buyCountLabel.font = [UIFont systemFontOfSize:14];
buyCountLabel.textColor = [UIColor lightGrayColor];
[self.contentView addSubview:buyCountLabel];
self.buyCountLabel = buyCountLabel;
}
return self;
}

// 2.在layoutSubviews方法中设置子控件的frame
- (void)layoutSubviews
{
[super layoutSubviews];

CGFloat contentH = self.contentView.frame.size.height;
CGFloat contentW = self.contentView.frame.size.width;
CGFloat margin = 10;

CGFloat iconX = margin;
CGFloat iconY = margin;
CGFloat iconW = 100;
CGFloat iconH = contentH - 2 * iconY;
self.iconView.frame = CGRectMake(iconX, iconY, iconW, iconH);

// titleLabel
CGFloat titleX = CGRectGetMaxX(self.iconView.frame) + margin;
CGFloat titleY = iconY;
CGFloat titleW = contentW - titleX - margin;
CGFloat titleH = 21;
self.titleLabel.frame = CGRectMake(titleX, titleY, titleW, titleH);
//    CGRectMake(titleX, titleY, titleW, titleH);

// priceLabel
CGFloat priceX = titleX;
CGFloat priceH = 21;
CGFloat priceY = contentH - margin - priceH;
CGFloat priceW = 70;
self.priceLabel.frame = CGRectMake(priceX, priceY, priceW, priceH);

// buyCountLabel
CGFloat buyCountH = priceH;
CGFloat buyCountY = priceY;
CGFloat buyCountX = CGRectGetMaxX(self.priceLabel.frame) + margin;
CGFloat buyCountW = contentW - buyCountX - margin;
self.buyCountLabel.frame = CGRectMake(buyCountX, buyCountY, buyCountW, buyCountH);
}

// 3.重写模型的set方法
- (void)setModel:(tgModel *)model
{
_model = model;

//设置数据
self.iconView.image = [UIImage imageNamed:model.icon];
self.titleLabel.text = model.title;
self.priceLabel.text = [NSString stringWithFormat:@"¥%@",model.price];
self.buyCountLabel.text = [NSString stringWithFormat:@"%@人已购买",model.buyCount];
}

+ (instancetype)cellWithTableView:(UITableView *)tableView
{
static NSString *ID = @"cell";
tgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

if (cell == nil) {
cell = [[tgCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}

return cell;
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: