根据Apple的文档,没有任何证据,但是我发现additionalSafeAreaInsets
已传播到childVC,但事实确实如此。
在iPhone 7模拟器上运行this gist时,将输出容器VC和子VC的底部安全区域插图均为88,这是因为我希望只有容器VC具有任何底部安全区域插入,而ChildVC的值为0(在iPhone X及更高版本上,仅为Home Indicator所需的数量)。
有什么办法可以得到这种行为?
谢谢!
答案 0 :(得分:1)
不是Apple Documentation的证据吗?
UIKit容器视图控制器已经调整了其子视图控制器的安全区域,以解决内容视图问题。例如,导航控制器扩展了其子视图控制器的安全区域,以解决导航栏的问题。
顺便说一句,这不是传播。这是更有意义的事情,在很多方面都有意义。如果您将ContainerViewController
的安全区域从底部设置为80 points
,并且您的ChildViewController
与该区域的X
个点重叠,则UIKit
自动将所有安全区域设置为该子视图控制器的区域达到X
点,因此任何子视图都不会超出您的安全区域。
例如,如果您要设置childVC
个约束
NSLayoutConstraint.activate([
childVC.view.heightAnchor.constraint(equalToConstant: childVCHeight),
childVC.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
childVC.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
// move childVC 30 points to the top
childVC.view.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -30)
])
在日志中,您会看到ChildViewController
安全区域的高度是50。这正是重叠的高度。