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 并告诉我
我想知道以前是否有人遇到过这个问题。我在我的项目中使用了一个导航控制器,我注意到当我第一次在它上面推送一个视图控制器时,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 并告诉我