自定义Cell
系统提供的Cell满足不了复杂的样式,因此:自定义Cell和自定义视图一样,自己床架哪一种符合我们要求的Cell并使用这个Cell
自定义Cell步骤:
- 创建一个类继承于UITableViewCell
- 实现UITableViewCell的初始化方法
- 确保所有你想要添加的子视图都在自定义Cell的初始化方法中创建
- 在Cell的子视图创建成功后,将子视图设置为属性
// 重写初始化方法
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
// 创建图片视图对象
self.iconImageView = [[UIImageView alloc] init];
self.iconImageView.backgroundColor = [UIColor blueColor];
[self.contentView addSubview:self.iconImageView];
// 创建标题对象
self.titleLabel = [[UILabel alloc] init];
self.titleLabel.backgroundColor = [UIColor blueColor];
[self.contentView addSubview:self.titleLabel];
// 创建简介对象
self.introduceLabel = [[UILabel alloc] init];
self.introduceLabel.backgroundColor = [UIColor blueColor];
[self.contentView addSubview:self.introduceLabel];
// 布局
CGFloat iconH = kHeight - 10;
CGFloat iconW = (kWidth - 15) / 3;
CGFloat labelH = (iconH - 5) / 3;
self.iconImageView.frame = CGRectMake(5, 5, iconH, iconW);
self.titleLabel.frame = CGRectMake(10 + iconW, 5, 2 * iconW, labelH);
self.introduceLabel.frame = CGRectMake(10 + iconW, 10 + labelH, 2 * iconW, 2 * labelH);
}
return self;
}
// 布局子视图
- (void)layoutSubviews {
CGFloat iconH = kHeight - 10;
CGFloat iconW = (kWidth - 15) / 3;
CGFloat labelH = (iconH - 5) / 3;
self.iconImageView.frame = CGRectMake(5, 5, iconH, iconW);
self.titleLabel.frame = CGRectMake(10 + iconW, 5, 2 * iconW, labelH);
self.introduceLabel.frame = CGRectMake(10 + iconW, 10 + labelH, 2 * iconW, 2 * labelH);
}
本文不讨论自适应高度,因为至今还没有程序的方法来代码自定义创建Cell并且获取自适应高度,除非通过第三方类库。