【发布时间】:2018-04-12 11:19:28
【问题描述】:
我正在更新我的应用程序以使其适应 iPhone X。除了一个之外,所有视图现在都可以正常工作。我有一个视图控制器,它提供了一个覆盖整个屏幕的自定义 UIView。在我使用UIScreen.main.bounds 在所有布局完成之前找出视图的大小之前(我需要它来为collectionView 放置正确的itemSize)。我以为现在我可以做类似的事情
UIScreen.main.bounds.size.height - safeAreaInsets.bottom 以获得正确的可用尺寸。问题是,在 iPhone X(模拟器)上尝试时,safeAreaInsets 返回 (0,0,0,0)。有任何想法吗?在其他视图中,我得到了 safeAreaInsets 的正确数字。
谢谢!
【问题讨论】:
-
您可以随时随地使用:` if #available(iOS 11.0, tvOS 11.0, *) { return UIApplication.shared.delegate?.window??.safeAreaInsets != .zero } return false `SOURCE
-
根据下面的火星回答,我还看到获得这些的唯一可靠方法是在 viewDidLayoutSubviews() 或 viewDidAppear 中。实际上,“覆盖 func viewSafeAreaInsetsDidChange()”似乎效果最好。