自定義Cell
系統(tǒng)提供的Cell滿足不了復(fù)雜的樣式,因此:自定義Cell和自定義視圖一樣,自己床架哪一種符合我們要求的Cell并使用這個(gè)Cell
自定義Cell步驟:
- 創(chuàng)建一個(gè)類繼承于UITableViewCell
- 實(shí)現(xiàn)UITableViewCell的初始化方法
- 確保所有你想要添加的子視圖都在自定義Cell的初始化方法中創(chuàng)建
- 在Cell的子視圖創(chuàng)建成功后,將子視圖設(shè)置為屬性
// 重寫初始化方法
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
// 創(chuàng)建圖片視圖對象
self.iconImageView = [[UIImageView alloc] init];
self.iconImageView.backgroundColor = [UIColor blueColor];
[self.contentView addSubview:self.iconImageView];
// 創(chuàng)建標(biāo)題對象
self.titleLabel = [[UILabel alloc] init];
self.titleLabel.backgroundColor = [UIColor blueColor];
[self.contentView addSubview:self.titleLabel];
// 創(chuàng)建簡介對象
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);
}
本文不討論自適應(yīng)高度,因?yàn)橹两襁€沒有程序的方法來代碼自定義創(chuàng)建Cell并且獲取自適應(yīng)高度,除非通過第三方類庫。