將文本內(nèi)容設(shè)置為自動換行
- 設(shè)置了Label的左邊和上邊間距囱皿,將其位置定死勇婴。
- Label的lines設(shè)置為0行才能正常執(zhí)行自動換行功能( 我失敗的圖。嘱腥。就不貼了
- 限制Label的換行寬度
我把換行寬度設(shè)置成了(屏幕寬度-20個像素)
// 設(shè)置label每一行文字的最大寬度
// 為了保證計(jì)算出來的數(shù)值 跟 真正顯示出來的效果 一致
self.contentLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20;
- 看耕渴,可以換行了。只是內(nèi)容超出了cell的高度齿兔,顯得十分難看橱脸。
設(shè)置自定義cell高度
往模型中添加一個cellHeight 屬性,方便保存自定義cell的高度分苇。
-
在自定義cell中計(jì)算當(dāng)前cell的高度
- 強(qiáng)制布局添诉,讓計(jì)算機(jī)算出當(dāng)前cell的高度
- 根據(jù)有無圖片的情況,獲取cell高度
[self layoutIfNeeded]; // 強(qiáng)制布局
if (status.picture) {
status.cellHeight = CGRectGetMaxY(self.pictureView.frame) + 10;
}else {
status.cellHeight = CGRectGetMaxY(self.contentLabel.frame) + 10;
}
- 首先在tabelViewControl 中医寿,給出一個估算高度
之所以先返回一個大約高度,因?yàn)檫@樣能避免 heightForRowAtIndexPath 方法在 cell 被創(chuàng)建之前就多次調(diào)用.這樣既不會得不到 cell 的高度,也能一定程度優(yōu)化程序性能.
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 200;
}
- 然后拿出模型中事先存放好的 cellHeight.
- 返回每個cell的高度.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return [self.statuses[indexPath.row] cellHeight];
}
- 大功告成