啰嗦几句:
这里主要是通过NSString的sizeWithFont:constrainedToSize:lineBreakMode:方法实现。
该方法用于计算显示完整内容所需要的最小尺寸。
下面是摘抄的说明
NSString的函数sizeWithFont:constrainedToSize:lineBreakMode:
API文档解释:若字符串以规定的约束条件进行描绘,则返回实际的大小。
用途:返回以指定字体进行描绘时,字符串所占据的实际大小。
API文档解释:若字符串以规定的约束条件进行描绘,则返回实际的大小。
用途:返回以指定字体进行描绘时,字符串所占据的实际大小。
运行效果:

程序解析:
该部分主要摘抄自《UITableView高度自適應》,稍稍做了改动。
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * CellIdentifier = @"MessageViewControllerCell";
int row = [indexPath row];
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// 用何種字體進行顯示
UIFont *font = [UIFont systemFontOfSize:14];
// 該行要顯示的內容
NSString *content = [_arr objectAtIndex:row];
// 实例化单元格对象
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
// 设置显示文字
cell.textLabel.text = content;
// 設置自動換行(重要)
cell.textLabel.numberOfLines = 0;
// 設置顯示字體(一定要和之前計算時使用字體一至)
cell.textLabel.font = font;
}
return cell;
}
- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
int row = [indexPath row];
// 列寬
CGFloat contentWidth = self.tv.frame.size.width;
// 用何種字體進行顯示
UIFont *font = [UIFont systemFontOfSize:14];
// 該行要顯示的內容
NSString *content = [_arr objectAtIndex:row];
// 計算出顯示完內容需要的最小尺寸
CGSize size = [content sizeWithFont:font constrainedToSize:CGSizeMake(contentWidth, 1000.0f) lineBreakMode:UILineBreakModeWordWrap];
// 這裏返回需要的高度
return size.height+20;
}
参考链接:
IOS开发之常用系统函数收集:http://fulerbakesi.iteye.com/blog/1592224
UITableView高度自適應:http://mrjeye.iteye.com/blog/1045785
代码打包:
本文详细介绍了如何使用Swift实现UITableView的高度自适应,包括计算每个单元格所需的最小尺寸和获取每行内容的高度。
2711

被折叠的 条评论
为什么被折叠?



