3

我有一个 UITableView 列出了某个项目的详细信息。有些细节需要不止一行才能正确显示。

我正在使用此代码来动态调整单元格的大小:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section == 1) return 320;

    CGSize maxSize = CGSizeMake(280, MAXFLOAT);
    CGSize cellSize = [[[appDelegate.callList objectAtIndex:callID] objectAtIndex:indexPath.row+1]
                       sizeWithFont:[UIFont systemFontOfSize:17]
                       constrainedToSize:maxSize
                       lineBreakMode:NSLineBreakByWordWrapping];
    return cellSize.height+10;
}

这是一个具有右细节样式的单元格。没有其他的。详细文本标签是 17 号字体。

使用此代码,我得到了切断下面单元格的单元格:

错误

我知道我显然可以在最后增加+10,但是我的细胞太大了,我不喜欢。

任何帮助表示赞赏!

编辑

我发现了这个问题。maxSize 中设置的宽度太大。

有没有办法在不事先手动输入的情况下找出当前的详细标签?

4

2 回答 2

0

请参考以下链接,它是 Xcode 中动态高度 UITableView 单元格的示例:它可能会对您有所帮助。

http://samrayner.com/posts/dynamic-tableview-cells/

于 2013-07-31T04:54:34.373 回答
-1

您可以使用

CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"这是一个长字符串,可以换行";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont
    constraintToSize:maximumSize
    lineBreakMode:self.myLabel.lineBreakMode];

计算 givin NSString 的显示大小。因此,您可以根据上面的代码更改单元格的高度。而且,您应该在某些单元格的高度更改后重新加载您的表格视图。

于 2013-07-31T04:01:17.743 回答