iOS 获取safeAreaInsets bottom 失败

主要是注意获取时机, 需要在 viewWillAppear之后, viewWillLayoutSubviews 方法中获取

安全距离改变时机

  • 这里有一个坑要踩踩了一开始笔者也是在这个坑了踩了很久 还以为苹果搞个安全距离的概念来忽悠我们的 如果我们在ViewController - (void)viewDidLoad来打印self.view.safeAreaInsets会发现始终 显示 self.view.safeAreaInsets = {0, 0, 0, 0} 这里有一个新的APIviewSafeAreaInsetsDidChange调用顺序 也就是我们之前所了解到的控制器View的生命周期的调用顺序(这里只列出View被加载时的顺序)
    viewDidLoad
    viewWillAppear
    viewSafeAreaInsetsDidChange
    ▿ 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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发布了79 篇原创文章 · 获赞 9 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/LeeCSDN77/article/details/103409912