View.bounds.height 与 NavigationController 上的预期不同

View.bounds.height different than expected on NavigationController

我想知道以前是否有人遇到过这个问题。我在我的项目中使用了一个导航控制器,我注意到当我第一次在它上面推送一个视图控制器时,view.bounds.height 计算补偿了状态栏。但是,当我关闭项目并再次尝试相同的推送时,view.bounds.height 计算现在无法补偿状态栏。

例如没有状态栏的实际view.bounds.height是400:

首次加载时:view.bounds.height = 380 (400 - 20)

第二次加载:view.bounds.height = 400(我想要的)

每次view.bounds.calculation在ViewDidLoad中完成。

我正在使用计算来设置其他视图,因此我希望它保持一致。无论如何我可以确保计算完成 而无需 补偿状态栏高度?

我想也许将视图计算代码放在视图控制器周期的后面会有所帮助,但我总是将视图边界计算放在 ViewDidLoad 中,没有任何问题。如果这不是好的做法,请告诉我。

我认为你应该使用 viewDidLayoutSubviews。当视图控制器视图的边界发生变化时,在子视图的位置和大小发生变化后调用此方法。 因此,请尝试将您的代码移至 viewDidLayoutSubviews 并告诉我