我需要能够在UITableView中调整单个单元格的高度,使其适合其详细信息标签中的文本量。
我已经玩了以下,但它没有为我工作:
How do I wrap text in a UITableViewCell without a custom cell
尝试的代码:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
}
以及
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"Go get some text for your cell.";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return labelSize.height + 20;
}
这并不起作用,它显示了单元格上的整个字符串,但单元格高度完全不受影响。
9条答案
按热度按时间0sgqnhkj1#
这很简单,只需将以下代码添加到代码中:
它自动计算行的高度,然后返回一个浮点数.
nlejzf6q2#
嗨乔希,
使用
tableView:heightForRowAtIndexPath:
,您可以在运行时给出每行的大小。现在您的问题是如何从字符串中获取高度,NSString类中的函数通过此代码解决您的问题,通过下面的行,您可以将标签的行数设置为最大值。因此,请在cellForRowAtIndexPath中设置它:方法。
单元格文本标签行数= 0;
如果你使用一些自定义单元格,然后用这个来管理所有标签字符串,并得到所有高度的总和,然后设置单元格的高度。
就是这样,不需要任何计算。有关详细信息,请查看tutorial.
omvjsjqw3#
在
CustomCell
中:请记住为UILabel
添加**约束top和bottom要根据文本调整UILabel高度,只需将
UILabel
行更改为0(see the answer here)然后在你的代码中,只设置2行
这是我的自定义单元格
下面是我的
UILabel
约束您将实现的屏幕
===建议==
UILabels
和Images
(不像我的例子),那么:UILabels
和Images
放在一个GroupView
中(视图)GroupView
添加constraint top and bottom to supper view
(就像我的图片中的UILabel)GroupView
高度(内容全部为UILabels
和Images
)estimateRowHeight
和tableView.rowHeight
希望这能有所帮助
cdmah0mi4#
根据您提供的代码,我认为您只是增加了单元格高度,而没有增加cell.textLabel的高度。
理想情况下,您应该设置cell.textLabel和单元格的框架大小,以便查看单元格中的完整文本。
查看视图在大小方面的问题的一个简洁的方法是将其颜色与背景颜色不同(尝试将cell.textLabel背景设置为黄色),然后查看是否实际设置了高度。
事情应该是这样的
希望这有帮助!
update:这是一个很老的答案,其中的许多行可能已经过时。
uemypmqf5#
对于swift开发人员:
自定义单元格:首先,您可以计算文本的高度,如下所示:
设置文本标签的**宽度
然后调用此函数:
对于基本单元格:
希望它能起作用。
idv4meu86#
在
tableView:heightForRowAtIndexPath:
中,您可以获取文本并使用sizeWithFont:constrainedToSize:
来获取文本的大小。然后只返回高度加上一些额外的缓冲区间距。
lnvxswe27#
你可以写一个全局的方法,使它可以在整个应用程序中使用。你需要根据你的要求传递文本,字体和宽度。
在Swift 4中:
3lxsmp7m8#
我可以使用自动布局来完成这个任务。确保你的标签对齐单元格的顶部和底部(我使用的是原型单元格),并且它的行数设置为0。然后在
tableView:heightForRowAtIndexPath:sizeWithFont:constrainedToSize:
中,你可以通过计算文本大小来设置单元格的高度:4nkexdtk9#