在自定义单元格中调整 iOS 7.1 中的 UILabel 大小

Posted

技术标签:

【中文标题】在自定义单元格中调整 iOS 7.1 中的 UILabel 大小【英文标题】:Resize UILabell in iOS 7.1 in Custom Cell 【发布时间】:2014-04-15 02:32:25 【问题描述】:

我有一个带有自定义单元格的表格视图。我正在使用 Xcode 5.1 和 ios 7.1。我想根据字符串的长度调整 UILabel 高度,并动态调整单元格的高度以适合标签。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    cell.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
    cell.titleLabel.numberOfLines = 0;
    [cell.titleLabel sizeToFit];

有些似乎可以正确调整大小,有些则没有。至于单元格的高度,我无法根据标签的高度来更新它。

【问题讨论】:

看到这个***.com/questions/19215199/… 【参考方案1】:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath


     return [self dynamicHeightAtIndexPath:indexPath]+20;




-(CGFloat)dynamicHeightAtIndexPath:(NSIndexPath *)indexPath

   CGSize maximumSize = CGSizeMake(275, 9999);
   UIFont *myFont = [UIFont fontWithName:@"MyriadPro" size:11];
   CGSize stringsize = [[self.array objectAtIndex:indexPath.row] sizeWithFont:myFont
                                                         constrainedToSize:maximumSize
                                                             lineBreakMode:NSLineBreakByWordWrapping];
   return stringsize.height;


【讨论】:

太棒了!这对我来说非常适合调整表格视图单元格的大小。我仍然遇到标签本身的问题。即使标签从左到右一直延伸,有时文本最终会像:文本文本文本文本(一个在另一个之上)而不是of: text text text text (在一行中扩展整个单元格)或单击单元格,按下视图控制器,然后返回,它会按原样显示,但是当您滚动时,您会看到一些混乱。 可以的话请提供截图 我已将照片上传到 Dropbox 上的一个文件夹 - dropbox.com/sh/4016fxw8qfutpoq/jtVwMw8zQs 如果您需要更多,请告诉我。一些字符串似乎计算正确但被截断 - 其他字符串正在工作但奇怪地堆叠。 好像看到乱七八糟的标签,点击单元格,推新的VC,然后回去——那些乱七八糟的,好像都修好了。【参考方案2】:

单元格的高度完全取决于您从tableView:heightForRowAtIndexPath: 返回的值。这是一个<UITableViewDelegate> 方法。

如果您希望单元格高度是动态的,则需要根据出现在该索引路径上的特定字符串在tableView:heightForRowAtIndexPath: 中执行计算。

如果您计划进行大量滚动,此计算可能会变得昂贵并导致性能问题。如果是这种情况,我建议缓存计算的高度或一次计算它们并将它们存储在与数据源并行的数组中。

【讨论】:

以上是关于在自定义单元格中调整 iOS 7.1 中的 UILabel 大小的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 如何在自定义单元格中使用继承?

iOS Swift:在自定义 UITableView 单元格中更新二维数组时获取重复值

如何在自定义 tableView Cell 中调整标签高度和宽度

自定义表格单元格中的堆栈视图

ios在表格视图单元格中视觉调整图像大小

在自定义单元格中的标签中分配值时出现异常