我有一个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:
内但没有运气。关于如何解决这个问题的任何想法?
提前致谢!
答案 0 :(得分:0)
如果您在启用了自动布局的情况下在布局代码中设置框架,则会出现这种情况。这不行。自动布局系统负责设置框架,并将覆盖您设置的值。
您应该使用约束指定布局或关闭自动布局。