我正在尝试使用下面的代码动态调整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"
)
答案 0 :(得分:2)
您没有说明如何初始化photosFromCommentsArray
。所以,试试这个:
if(description == (id)[NSNull null])
return 60;
else
return 200;
或者:
if(description == nil)
return 60;
else
return 200;
答案 1 :(得分:0)
您可以使用以下命令返回字符串的高度:
float height = [description sizeWithFont:[UIFont YOURFONT] constrainedToSize:CGSizeMake(tableView.frame.size.width, FLT_MAX) lineBreakMode:NSLineBreakByWordWrapping].height;
当它被约束到tableview的宽度和特定字体时,它将返回字符串的高度。
如果您的某些单元格文本很少,您可能需要检查它是否为最小高度。
答案 2 :(得分:0)
在委托方法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。