ios实现动态加载cell高度

本文介绍如何在iOS应用中实现UITableView单元格高度根据内容自动调整,包括纯文本和混合图片内容的情况。提供了关键代码示例,以及一个包含实现细节的demo下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

也许你会遇到这样一个问题,或者需要这么一个功能。
表中每个单元格的高度随着该单元格的内容多少而变化。尤其内容不止是文字的时候

其实要实现这个功能很简单。
首先所谓的动态分配单元格高度只是效果上看起来是这样,其实还是跟我们平常设置
单元格高度一样,每行先分配高度。
这里就一个demo来说说吧

要实现这个功能其实最重要的就是下面的两个方法

1、//设置行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *text = .......;
//这里的text具体内容就是你要在单元格上显示的内容

CGSize constraint = CGSizeMake(300, 2000.f);
//先设置一个约束,这个是为了在宽度一定的时候计算text内容所占视图的大小
//高度尽量设的大一下,因为你不确定text具体内容有多少

CGSize size= [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:constraint lineBreakMode:NSLineBreakByClipping];
//这里利用NSString的一个方法来计算text所占大小,
//感谢NSString为我们封装了这个方法,使得这个功能得以实现

CGFloat height = MAX(size.height,40.0f);

//这里是为了给单元格高度设置一个最低限度


return height;

}


2、//配置每个单元
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UILabel *textLabel = nil;
//先创建一个用于显示文字的label,当然也可以用其他的,
static NSString *cellIndentifier = @"indentifier";
//为单元格创建一个专属标签

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIndentifier];
//先搜索缓冲区看有没有专属标签的cell

if (cell == nil) {
//如果没有那么就创建一个
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIndentifier];

//把标签初始化
textLabel = [[UILabel alloc]initWithFrame:CGRectZero];
textLabel.font = [UIFont systemFontOfSize:14];
textLabel.tag = 1;
//这里设置tag值以便以后调用

//将label添加到cell
[[cell contentView]addSubview:textLabel];

}

NSString *text = ......;
//同上面的
CGSize constraint = CGSizeMake(300, 2000.f);
CGSize size= [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:constraint lineBreakMode:NSLineBreakByClipping];

if (!textLabel) {
textLabel = (UILabel *)[cell viewWithTag:1];
}

//如果label是空的那就通过tag值调用


textLabel.text = text;
textLabel.frame = CGRectMake(10, 10, 300, size.height);
//通过text内容所占size的设置label所显示在的区域

return cell;

}


功能核心也就是以上两个方法,是不是很简单?当然这只是纯文字,要是还混合有图片呢?
其实原理是一样的,UIImage 也有个属性 size ,说了这个你应该就知道该怎么办了吧?
好了就到这里,后面附上我做的一个关于图片的demo,若是还不懂可以跟我讨论一下。

这是这个demo的截图,可以看一下效果


这个demo的链接:http://download.youkuaiyun.com/detail/u012884714/6795293


自己遇到了这个问题,然后查资料实现了这个功能,在这里跟大家分享了 —— LC


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值