【发布时间】:2013-07-31 03:46:39
【问题描述】:
我有一个 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 中设置的宽度太大。
有没有什么方法可以在不事先手动输入的情况下找出当前的详细标签?
【问题讨论】:
-
appDelegate.callList中的文本是大写的,还是cellForRowAtIndexPath:中的文本是大写的?另外,您是否测量了正确细节的宽度以确保 280 是正确的?对我来说,它看起来可能比那个小一点。 -
文字原样。没有做外壳。我没有测量 280,那只是一个随机数,似乎可以工作哈哈。
-
在这个链接里看我的回答stackoverflow.com/questions/17961951/…
-
@AKrush95 无法找到当前的 detailLabel 大小(因为在此方法中,尚未创建单元格。)您可以创建自己的 UITableView 子类并将其设置为您想要的任何内容。
标签: ios cocoa-touch uitableview