我有一个带有 subview Controller (rootViewController)的fullScreenViewController,其 View 有时会显示在rootViewController的 View 上方(但作为 subview ),占据了全屏。

IE。rootViewController.addChildViewController( fullScreenViewController )rootViewController.view.addSubview( fullScreenViewController.view )
这种“全屏演示”是通过约束更新来完成的,而不是通过使用present()来完成的(这是有充分理由的)。

当我首先初始化fullScreenViewController并将其添加为rootViewController的 subview Controller 时,然后更新约束使其在屏幕上显示时,safeAreaInsets都已正确设置。

但是,稍后,当我的rootViewController实际上将present()用作模式VC,并且该VC已被dismiss()编码时,safeAreaInsets上的fullScreenViewController不再正确,并且fullScreenViewController中的内容会在状态栏顶部滑动。

如何强制正确重新计算safeAreaInsets上的fullScreenViewController,以使其与rootViewController匹配,使其与设置后的方式相同?

根据文档,rootViewController应该在所有childViewController上正确设置safeAreaInsets,但是事实并非如此。

ios - 强制更新 subview  Controller 的safeAreaInsets-LMLPHP

ios - 强制更新 subview  Controller 的safeAreaInsets-LMLPHP

最佳答案

演示文稿更改了安全区域后, subview Controller 的safeAreaInsets没有正确刷新,我遇到了完全相同的问题。

我发现,通过在 subview 的 subview 之前将 child 的 View 作为父 View 的直接 subview ,可以解决此问题。我猜想当子级VC的 View 是父级的直接 subview 时,UIKit代码会更快乐。

如果可以将 View 层次结构重构为该配置(如果不是这样的话),则可以这样做。

关于ios - 强制更新 subview Controller 的safeAreaInsets,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51214544/

10-15 18:35