自定义UiTableCell调整大小问题

时间:2012-07-15 13:06:35

标签: ios uitableview

我有一个自定义表格单元格,其中包含自定义ui视图。我的单元格高度是动态的,因为它取决于来自服务器的数据。一旦我有数据,我调整单元格框架的大小,使其在表格中可见。

但是当我通过修改单元格的高度来调整单元格框架的大小时,单元格内容永远不会正确调整大小。我已经设置了正确调整蒙版大小的内部视图,但不确定当我通过修改单元格框架更改表视图的heightForRowIndexPath委托方法中的单元格高度时,内部视图不会调整大小。

我在这里找到的解决方案是,一旦我为单元格设置了新框架,我就为内部容器视图设置了相同的框架,这样可以调整所有子视图的大小。

我只需要知道细胞大小调整可能存在什么问题。

先谢谢

谢谢, 纳温

2 个答案:

答案 0 :(得分:3)

所有视图都有一个属性autoresizesSubviews,可以自动调整大小。也就是说,它对UITableView单元意味着它的子视图会被调整大小。但是,UITableViewCell的“contentView”属性不是子视图,它是由单元管理的视图。虽然将对单元格的帧更改传播到contentView似乎是合乎逻辑的,但它们并非如此。我刚刚修改了自己的tableView项目,以验证在单元格和contentView上都设置了autoresizesSubviews,并且单元格框架更改对contentView没有影响。

根据我的经验,帧高度对单元格的显示方式没有影响,因为backgroundView(如果有)和contentView都是“托管”而不是子视图。您甚至无法将它用于heightForRowAtIndexPath:因为在甚至创建单元格之前调用该回调(并且尝试在该方法中获取并使用它会导致我的应用程序崩溃)。

答案 1 :(得分:3)

如果将子视图添加到单元格contentView,则layoutSubviews中的内容可以正常运行。但是,您必须记住在布置子视图之前调用[super layoutSubviews];,这将正确调整单元格contentView的大小。