我被困住了。我有一个稍微复杂的视图层次结构。一个UITabBarController来规则三个UINavigationControllers。在每个NavigationController中,我都有一个根UITableViewController,它会产生其他类型的东西。所有都是子类。昨天一切正常,在调整了一些scrollview插件并切换到块后,我遇到了问题。
当我将另一个TableViewController推送到导航堆栈时,一切正常。但是,当我弹出TableViewController并记录根TableViewController的contentSize
时viewWillAppear contentSize: {320, 15063.414}
viewWillLayoutSubviews contentSize: {0, 0}
viewDidLayoutSubviews contentSize: {0, 0}
viewDidAppear contentSize: {0, 0}
仅当从我的自定义TableViewController弹出到同一类型的另一个TableViewController时才会发生这种情况。知道发生了什么(大概在viewDidLayoutSubviews
)?
我怀疑TabBarController或NavigationController可能会出现问题,但我仍然在画一个空白。
我已更新记录的内容包括viewWillLayoutSubviews
和viewDidLayoutSubviews
。在AutoLayout甚至得到它之前,似乎所有东西都归零了。这个假设是否正确?
当我将视图控制器推到顶部时,同样适当地设置内容大小并将其设置为零的模式也会发生。然后,当我将其弹出时,它会设置正确的contentSize,然后将其删除。
我想出了一个解决方法。我缓存了我的单元格高度,所以在viewWillLayoutSubviews
我正确设置了contentSize。如果我以模态方式显示视图,则问题仍然存在,因为未调用viewWillLayoutSubviews
。有点奇怪。
答案 0 :(得分:0)
你说“并在调整了一些scrollview插件之后”。请记住,scrollview的x,y引用与主UIWindow(屏幕)或(UIView)x,y坐标不同。同时摆脱AutoLayout或以编程方式将帧内容设置为所需的x,y位置,宽度和高度。
检查以下代码:
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
}