UITableViewCell 大小不遵循内容视图大小

Posted

技术标签:

【中文标题】UITableViewCell 大小不遵循内容视图大小【英文标题】:UITableViewCell size does not follow Content View size 【发布时间】:2014-11-14 16:48:05 【问题描述】:

我有两个 UITableViewControllers 使用同一组单元格模板,因此我在我的 Storyboard 中创建了一个包含这些模板的表格视图控制器。我的表格视图控制器实例化了这个模板持有者表格视图的一个实例,然后在-tableView:cellForRowAtIndexPath: 中,他们将其中一个单元格deque,并根据需要对其进行配置。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    NSDictionary *widgetDict = [self.widgets objectAtIndex:indexPath.row];
    DMSWidget *widget = [self.widgetStorageTableViewController.tableView dequeueReusableCellWithIdentifier:@"Key Value Row"];

    ...

    return widget;

这些单元格的内部布局完全使用 AutoLayout 设置。

一切正常,除了我得到具有标准 44 px 高度和宽度的表格视图的单元格,内容视图比这更窄(取决于它们包含的内容,内容较少的单元格更小),并且更长比细胞本身。因此,内容视图与下一个单元格重叠,但不会填满整个宽度。

我不明白,这怎么会发生。 UITableViewCell 的大小怎么可能与它的内容视图不同?它们应该是一样的,不是吗?

我尝试过但失败了:

实现-tableView:heightForRowatIndexPath::尝试返回UITableViewAutomaticDimension,但没有帮助 在计算大小时重新加载我的表格视图:什么都不做 向单元格实现添加 hack,例如在 -awakeFromNib 中设置 autoresizingMask:我可以使内容视图扩展到单元格本身的宽度,但它仍然与下一个单元格重叠

更新: 看起来与双表视图架构无关。当我将我的单元格复制到它将显示的 tableView 时,会出现同样的问题。

【问题讨论】:

【参考方案1】:

我找到了解决办法:都是我的错。在我的单元格的一些祖先中有一个 init,它用CGRectZero 显式调用-initWithFrame:。删除它后,ios 8 可以使用它的帧值并且一切正常。

【讨论】:

以上是关于UITableViewCell 大小不遵循内容视图大小的主要内容,如果未能解决你的问题,请参考以下文章

调整视图的大小会使其他视图在 UITableViewCell 中反弹

添加子视图后,UITableViewCell contentView 框架大小会自动增加吗

当 UITextView 大小发生变化时,如何调整 UITableViewCell 的大小?

动态 UITableViewCell 不根据内容调整大小

在具有自动布局的 UITableViewCell 中动态调整大小的 UIWebView - 违反约束

UITableViewCell 内容视图不填充单元格