当视图出现时,UITableView可见单元格不显示子视图

时间:2013-06-29 08:00:04

标签: ios uiview uitableview layoutsubviews

我有一个UITableView,它有多个部分,自定义UITableViewCell子类填充表格。在这些UITableViewCell子类中,我正在实现layoutSubviews来自定义标签的位置等。

除了视图加载时的第一批可见单元格外,所有单元格的子视图都按其应有的方式进行调整。它们与故事板中的布局相同,这不是我想要的。例如:

http://i.stack.imgur.com/L5GJh.png

注意:绿色和橙色边框是一种视觉辅助,可以查看标签是否正在调整大小。

滚动时,出现的所有新单元格的子视图都与我在layoutSubviews中编程的方式相同。就第一批可见单元格而言,我可以将它们滚动到屏幕外然后重新打开,然后将子视图完美地布局。例如:

http://i.stack.imgur.com/jgjch.png

tableView: cellForRowAtIndexPath:内,我在方法返回单元格之前调用[cell layoutIfNeeded]。如果我将其更改为[cell layoutSubviews],则会发生相反的情况,其中第一批可见单元格按原样排列,但滚动时加载的所有单元格都没有正确布局。

我试图将[cell layoutIfNeeded]放在[tableview: willDisplayCell:内但没有运气。关于如何解决这个问题的任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您在启用了自动布局的情况下在布局代码中设置框架,则会出现这种情况。这不行。自动布局系统负责设置框架,并将覆盖您设置的值。

您应该使用约束指定布局或关闭自动布局。