將文本內(nèi)容設(shè)置為自動(dòng)換行
- 設(shè)置了Label的左邊和上邊間距,將其位置定死。

- Label的lines設(shè)置為0行才能正常執(zhí)行自動(dòng)換行功能( 我失敗的圖。。就不貼了

- 限制Label的換行寬度
我把換行寬度設(shè)置成了(屏幕寬度-20個(gè)像素)
// 設(shè)置label每一行文字的最大寬度
// 為了保證計(jì)算出來的數(shù)值 跟 真正顯示出來的效果 一致
self.contentLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20;
- 看,可以換行了。只是內(nèi)容超出了cell的高度,顯得十分難看。

設(shè)置自定義cell高度
往模型中添加一個(gè)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 中,給出一個(gè)估算高度
之所以先返回一個(gè)大約高度,因?yàn)檫@樣能避免 heightForRowAtIndexPath 方法在 cell 被創(chuàng)建之前就多次調(diào)用.這樣既不會(huì)得不到 cell 的高度,也能一定程度優(yōu)化程序性能.
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 200;
}
- 然后拿出模型中事先存放好的 cellHeight.
- 返回每個(gè)cell的高度.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return [self.statuses[indexPath.row] cellHeight];
}
- 大功告成
