我有一个表视图,其中包含一组2行(在storyboard中创建)。我有一个特定的UITableViewCell,其中包含一个动态生成大小的文本框。我想动态设置包含UITableViewCell的高度,但是为UITableViewCell设置.frame似乎不起作用。有没有人以编程方式完成此操作,而不使用tableView:heightForRowAtIndexPath:?
当前代码:
CGSize maximumLabelSize = CGSizeMake(296,9999);
CGSize expectedLabelSize = [self.place.details sizeWithFont:self.descriptionLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:self.descriptionLabel.lineBreakMode];
CGRect labelFrame = self.descriptionLabel.frame;
labelFrame.size.height = expectedLabelSize.height;
// this does not change the height of the UITableViewCell....
self.descriptionTableViewCell.frame = labelFrame;
答案 0 :(得分:2)
正如您所注意到的,无论UITableViewCell
的高度如何,它都会被剪切到该索引路径的UITableView
行的高度。在调用tableView:cellForRowAtIndexPath:
时,已经布置了行高。只需使用tableView:heightForRowAtIndexPath:
,因为它就是它的目的。关键点是表视图需要知道所有行的高度,以设置其滚动视图,滚动条等。另一方面,它只需要具有实际的单元格在屏幕上。有关UITableViewDelegate以这种方式工作的原因的更多讨论,请参阅this answer。