iOS开发_自定义等高 Cell

1、创建

  • 1.1 BookCell.h

@class BookModel;
@interface BookCell : UITableViewCell

// 定义 Cell 的数据模型
@property(nonatomic, strong) BookModel *book;

@end
  • 1.2 BookCell.m

#import "BookCell.h"
#import "BookModel.h"

@interface BookCell()

// 创建自定义 Cell 视图包含的内容
@property(nonatomic, strong) UIImageView *iconView;
@property(nonatomic, strong) UILabel *titleLabel;
@property(nonatomic, strong) UILabel *detailLabel;
@property(nonatomic, strong) UILabel *priceLabel;

@end

@implementation BookCell

// 重写初 Cell 始化方法,创建自定义 Cell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

	if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

		// 创建子视图
		// 创建 iconView 视图,并添加到自定义 Cell 上
		self.iconView = [[UIImageView alloc] init];
		self.iconView.layer.borderColor = [[UIColor greenColor] CGColor];
		self.iconView.layer.borderWidth = 2;
		[self.contentView addSubview:self.iconView];

		// 创建 titleLabel 视图
		self.titleLabel = [[UILabel alloc] init];
		self.titleLabel.font = [UIFont boldSystemFontOfSize:14];
		self.titleLabel.textColor = [UIColor redColor];
		[self.contentView addSubview:self.titleLabel];

		// 创建 detailLabel 视图
		self.detailLabel = [[UILabel alloc] init];
		self.detailLabel.font = [UIFont systemFontOfSize:12];
		[self.contentView addSubview:self.detailLabel];

		// 创建 priceLabel 视图
		self.priceLabel = [[UILabel alloc] init];
		self.priceLabel.font = [UIFont systemFontOfSize:12];
		[self.contentView addSubview:self.priceLabel];
	}
	return self;
}

// 设置显示的数据
- (void)setBook:(BookModel *)book {
	_book = book;

	// 设置数据,设置 cell 视图上显示的内容 内容
	self.iconView.image = [UIImage imageNamed:book.icon];
	self.titleLabel.text = book.title;
	self.detailLabel.text = book.detail;
	self.priceLabel.text = book.price;
}

// 布局子视图
- (void)layoutSubviews {
	[super layoutSubviews];

	// 布局子视图
	self.iconView.frame = CGRectMake(10, 10, 60, 60);
	self.titleLabel.frame = CGRectMake(90, 5, 200, 25);
	self.detailLabel.frame = CGRectMake(90, 30, 200, 25);
	self.priceLabel.frame = CGRectMake(90, 55, 200, 25);
}

@end

2、使用

// 使用自定义 Cell 创建,UITableViewDataSource 协议方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

	// 使用自定义的 Cell 定义
	BookCell *cell = [tableView dequeueReusableCellWithIdentifier:@"testIdentifier"];

	if (cell == nil) {
		// 使用自定义的 Cell 创建
		cell = [[BookCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"testIdentifier"];
	}
	BookModel *bookModel = [self.myDataArray objectAtIndex:indexPath.row];
	cell.book = bookModel;

	return cell;
}
posted @ 2018-08-05 12:51  CH520  阅读(232)  评论(0编辑  收藏  举报