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

时间:2014-04-15 02:32:25

标签: ios uitableview resize uilabel

我有自定义单元格的表格视图。我正在使用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];

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

2 个答案:

答案 0 :(得分:0)

单元格的高度仅由您从tableView:heightForRowAtIndexPath:返回的值确定。这是<UITableViewDelegate>方法。

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

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

答案 1 :(得分:0)

- (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;

}