将文本内容设置为自动换行
- 设置了Label的左边和上边间距,将其位置定死。
- Label的lines设置为0行才能正常执行自动换行功能( 我失败的图。。就不贴了
- 限制Label的换行宽度
我把换行宽度设置成了(屏幕宽度-20个像素)
// 设置label每一行文字的最大宽度
// 为了保证计算出来的数值 跟 真正显示出来的效果 一致
self.contentLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20;
- 看,可以换行了。只是内容超出了cell的高度,显得十分难看。
设置自定义cell高度
-
往模型中添加一个cellHeight 属性,方便保存自定义cell的高度。
-
在自定义cell中计算当前cell的高度
- 强制布局,让计算机算出当前cell的高度
- 根据有无图片的情况,获取cell高度
[self layoutIfNeeded]; // 强制布局
if (status.picture) {
status.cellHeight = CGRectGetMaxY(self.pictureView.frame) + 10;
}else {
status.cellHeight = CGRectGetMaxY(self.contentLabel.frame) + 10;
}
- 首先在tabelViewControl 中,给出一个估算高度
之所以先返回一个大约高度,因为这样能避免 heightForRowAtIndexPath 方法在 cell 被创建之前就多次调用.这样既不会得不到 cell 的高度,也能一定程度优化程序性能.
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 200;
}
- 然后拿出模型中事先存放好的 cellHeight.
- 返回每个cell的高度.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return [self.statuses[indexPath.row] cellHeight];
}
- 大功告成
网友评论