我有一个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号字体。
使用此代码,我得到的单元格会切断下面的单元格:
我知道我显然可以在最后增加+10,但那时我的细胞对我来说太大了。
任何帮助表示赞赏!
我找到了这个问题。 maxSize中设置的宽度太大。
有没有办法在不事先手动输入的情况下找出当前的细节?
答案 0 :(得分:0)
请参考下面的链接,它是Xcode中动态高度UITableView单元的一个例子:它可能对你有帮助。
答案 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。