1

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

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

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

我只需要知道单元格调整大小可能是什么问题。

提前致谢

谢谢,纳文

4

2 回答 2

3

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

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

于 2012-07-15T14:35:41.880 回答
3

如果将子视图添加到单元格中,则contentViewlayoutSubviews. 但是,您必须记住[super layoutSubviews];在布局子视图之前调用,这将contentView正确调整单元格的大小。

于 2014-05-27T16:49:38.670 回答