[英]How to dynamically adjust the height of a UITableView cell
我正在尝试使用下面的代码动态调整UITableView
单元格的高度。 此刻只return 200;
被称为。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *description = [photosFromCommentsArray objectAtIndex:indexPath.row];
NSLog(@"description is %@",description);
if(description == NULL)
return 60;
else {
return 200;
}
}
NSLog
输出的描述是:
正如你所看到的,有时它就是在这种情况下我想要return 60;
当它包含其他东西而不是我希望它return 200;
2013-09-12 16:30:36.567 1000 [11619:907] description is <null>
2013-09-12 16:30:36.568 1000 [11619:907] description is <null>
2013-09-12 16:30:36.569 1000 [11619:907] description is <null>
2013-09-12 16:30:36.569 1000 [11619:907] description is <null>
2013-09-12 16:30:36.570 1000 [11619:907] description is (
"http://****.net/uploads/nodes/1464/photos/a0d41e7834b5119884c6fa83aaffb3023f609c0e.jpeg"
)
2013-09-12 16:30:36.571 1000 [11619:907] description is (
"http://****.net/uploads/nodes/1464/photos/739701d7609bcb65ce5293f3551773c6bb6a498d.jpeg"
)
2013-09-12 16:30:36.572 1000 [11619:907] description is (
"http://****.net/uploads/nodes/1464/photos/99cf9e662b0d4f00e316bd2f8c01faddb20e9473.jpeg"
)
2013-09-12 16:30:36.572 1000 [11619:907] description is (
"http://*****.net/uploads/nodes/1464/photos/a6680113da9567b8477810703e14616631c39a06.jpeg"
)
您没有显示如何初始化photosFromCommentsArray
。 所以,试试这个:
if(description == (id)[NSNull null])
return 60;
else
return 200;
要么:
if(description == nil)
return 60;
else
return 200;
您可以使用以下命令返回字符串的高度:
float height = [description sizeWithFont:[UIFont YOURFONT] constrainedToSize:CGSizeMake(tableView.frame.size.width, FLT_MAX) lineBreakMode:NSLineBreakByWordWrapping].height;
当它被约束到tableview的宽度并以特定字体约束时,这将返回字符串的高度。
您可能需要检查它是否是最小高度,因为您有一些文本非常少的单元格。
在委托方法tableView:heightForRowAtIndexPath中:返回行的高度,从那里你可以调整单元格的高度到你需要的维度,以适应文本,图像等。
根据我的经验,最好的方法是
NSString* description = [photosFromCommentsArray objectAtIndex:indexPath.row];
UITextView* dummyTextView = [[UITextView alloc] initWithFrame:CGRectMake(0,0,width_Of_Text_With_In_Cell, 1];
[dummyTextView sizeToFit];
return defaultHeight + dummyTextView.frame.size.height;
现在这看起来很奇怪而且值得怀疑,但是当我试图获得文本的确切高度时,这些值不会很好。 使用textview,它每次都给我一个完美的大小。 使用时
[string sizeWithFont:constrainedToSize:lineBreakMode:];
高度和宽度将根据文本的呈现方式而有所不同,这是有道理的,不同的字母有不同的宽度和不同的高度,有时文本会下降到下一行,有时它不会,以及高度的计算有时会关闭....它给了我一个整体的麻烦。
如果您的内容位于UITextView中,此代码有效,调整标签或文本字段的大小会增加上述麻烦...,因此请确保您的描述是单元格中的textView。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.