UITableCell高度未正确调整

时间:2013-07-31 03:46:39

标签: ios cocoa-touch uitableview

我有一个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;
}

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

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

Error

我知道我显然可以在最后增加+10,但那时我的细胞对我来说太大了。

任何帮助表示赞赏!

修改

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

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

2 个答案:

答案 0 :(得分:0)

请参考下面的链接,它是Xcode中动态高度UITableView单元的一个例子:它可能对你有帮助。

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

答案 1 :(得分:-1)

您可以使用

CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"This is a long string which wraps";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont 
    constrainedToSize:maximumSize 
    lineBreakMode:self.myLabel.lineBreakMode];

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