【问题标题】:ios: Programmatically setting static UITableViewCell (not using tableView:heightForRowAtIndexPath:)ios:以编程方式设置静态 UITableViewCell(不使用 tableView:heightForRowAtIndexPath :)
【发布时间】:2025-11-27 00:45:01
【问题描述】:

我有一个表格视图,其中包含一组静态的 2 行(在情节提要中创建)。我有一个特定的 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;

【问题讨论】:

    标签: ios tableview


    【解决方案1】:

    正如您所注意到的,无论UITableViewCell 的高度如何,它都会被剪裁到该索引路径的UITableView 行的高度。到 tableView:cellForRowAtIndexPath: 被称为行高时,已经布置好了。只需使用tableView:heightForRowAtIndexPath:,因为这是它的用途。一个关键点是表格视图需要知道其所有行的高度以设置其滚动视图、滚动条等。另一方面,它只需要具有实际的单元格用于什么在屏幕上。有关 UITableViewDelegate 为何以这种方式工作的更多讨论,请参阅this answer

    【讨论】:

      最近更新 更多