ios - UIView 中的 safeAreaInsets 在 iPhone X 上为 0

标签 ios iphone swift iphone-x

我正在更新我的应用程序以使其适用于 iPhone X。除一个 View 外,所有 View 现在都可以正常工作。我有一个 View Controller ,它呈现一个覆盖整个屏幕的自定义 UIView。在我使用 UIScreen.main.bounds 在完成所有布局之前找出 View 的大小之前(我需要它来为 collectionView 放置正确的 itemSize)。我以为现在我可以做类似的事情 UIScreen.main.bounds.size.height - safeAreaInsets.bottom 以获得正确的可用大小。问题是,safeAreaInsets 返回 (0,0,0,0) 尝试使用 iPhone X(模拟器)。有任何想法吗?在其他 View 中,我得到了 safeAreaInsets 的正确数字。

谢谢!

最佳答案

我最近遇到了一个类似的问题,一旦触发 viewDidLoad,安全区域插图就会返回 (0, 0, 0, 0)。似乎它们的设置比 View 加载的其余部分稍晚。

我通过覆盖 viewSafeAreaInsetsDidChange 并在其中进行布局来绕过它:

override func viewSafeAreaInsetsDidChange() {
 // ... your layout code here
} 

关于ios - UIView 中的 safeAreaInsets 在 iPhone X 上为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47032855/

相关文章:

iphone - 如何正确定义结构

ios - - 使用 `$(inherited)` 标志,或 - 从目标中删除build设置。 CocoaPod Swift3 pod更新报错

swift - 使用 GeometryReader 和 Padding 时的无限循环

objective-c - 如果字典为空,我如何使用 [NSMutableDictionarydictionaryWithDictionary] ?

ios - UIStatusBar设置半透明:NO avoid moving content down

ios - 为 UITableView 标题创建数组

ios - `SCNetworkReachabilityScheduleWithRunLoop` 还是 `SCNetworkReachabilitySetDispatchQueue`?和比赛条件

objective-c - 帮助解决编译器警告 : Initialization from distinct Objective-C type when types match

iphone - 使用新文档支持 API 的 iOS 应用程序到应用程序数据传输

JSON数据: A_Geo: "MULTIPOINT ((121.5831587 24.9971109))" need to be parsed into dictionary