主要是注意获取时机, 需要在 viewWillAppear之后, viewWillLayoutSubviews 方法中获取
安全距离改变时机
- 这里有一个坑要踩踩了
一开始笔者也是在这个坑了踩了很久 还以为苹果搞个安全距离的概念来忽悠我们的
如果我们在ViewController- (void)viewDidLoad
来打印self.view.safeAreaInsets会发现始终 显示self.view.safeAreaInsets = {0, 0, 0, 0}
这里有一个新的APIviewSafeAreaInsetsDidChange
调用顺序 也就是我们之前所了解到的控制器View的生命周期的调用顺序(这里只列出View被加载时的顺序)
viewDidLoad
viewWillAppearviewSafeAreaInsetsDidChange
▿ UIEdgeInsets - top : 44.0 - left : 0.0 - bottom : 34.0 - right : 0.0 // 在iPhoneX 中竖屏模式下的显示效果
viewWillLayoutSubviews
viewDidAppear
只有在调用viewSafeAreaInsetsDidChange及以后的方法才能获得view和Controller的UIEdgeInsets。所以在viewDidLoad中根据Safe Area设置界面会有问题。
作者:严兵胜
链接:https://www.jianshu.com/p/b7662cd4ed3d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。