在将项目转换为使用自动布局的过程中,我处理的问题是UITableView
contentSize
最初设置正确,但是调用父UITableViewController
' -updateViewConstraints
,contentSize
为零。
App[36457:60b] -- viewWillAppear in (KRTestTableViewController) Called! App[36457:60b] -- viewWillLayoutSubviews (KRTestTableViewController): content size = (320.0, 611.0), inset=(64.0, 93.0), offset=(-64.0), layout guides=(64.0, 93.0) App[36457:60b] -- viewDidLayoutSubviews (KRTestTableViewController): content size = (320.0, 611.0), inset=(64.0, 93.0), offset=(-64.0), layout guides=(64.0, 93.0) App[36457:60b] **** updateConstraints called in (KRTestTableViewCell) App[36457:60b] **** updateViewConstraints called in (KRTestTableViewController). content size height=(611.0), contentOffset = -64.0, inset=(64.0, 93.0) App[36457:60b] before calling [super updateViewConstraints], KRTestTableViewController.view.needsUpdateConstraints = 1 App[36457:60b] after calling [super updateViewConstraints], KRTestTableViewController.view.needsUpdateConstraints = 0 App[36457:60b] -- viewWillLayoutSubviews (KRTestTableViewController): content size = (0.0, 0.0), inset=(64.0, 93.0), offset=(-64.0), layout guides=(64.0, 93.0) App[36457:60b] -- viewDidLayoutSubviews (KRTestTableViewController): content size = (0.0, 0.0), inset=(64.0, 93.0), offset=(-64.0), layout guides=(64.0, 93.0) App[36457:60b] -- viewDidAppear in (KRTestTableViewController) Called!
我已将问题缩小到更新约束后内容大小设置为零。
关于可能导致此问题或如何解决问题的任何想法?
这是正常的预期序列:视图布局,然后更新约束,再次查看布局?
答案 0 :(得分:0)
发现根本原因! topLayoutGuide
和UITableViewController
存在错误,如果您致电topLayoutGuide
,则contentSize
的{{1}}将设置为零!错误搜寻的时间是由一个非常不必要的调试日志语句引起的,该语句输出UITableView
= _ +
我之前关于致电topLayoutGuide
以修复reloadRowsAtIndexPaths:nil ...
的评论仍然会更正contentSize
。我已经在contentSize
内放置了(零检查),以防viewDidLayoutSubviews
出现。
在此处查看相同的问题:Calling topLayoutGuide breaks scrolling altogether?