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 的大小?