【问题标题】:How to get Height of Safe Area Programmatically Prior to IOS 11?如何在 IOS 11 之前以编程方式获取安全区域的高度?
【发布时间】:2019-05-19 21:11:25
【问题描述】:

如果不使用 safeAreaLayoutGuide(我的目标是 IOS 9+),有没有办法以编程方式获取 IOS 中“安全区域”的高度,而无需为此目的创建新视图(仅限于安全区域) ?

我无法设置安全区域的出口,因为它不是 UIView... 甚至不是任何类型的类。

如果我只是在 ViewController 中使用 self.view.height,它会太高(错误)。

还有其他方法吗?

【问题讨论】:

标签: ios swift layout uiview safearealayoutguide


【解决方案1】:

UIViewController 中,您可以像这样使用顶部和底部布局指南:

let safeAreHeight = self.view.frame.height - self.topLayoutGuide.length - self.bottomLayoutGuide.length

对于UIView,您可以使用safeAreaLayoutGuide 进行条件检查:

let verticalSafeAreaInset: CGFloat
if #available(iOS 11.0, *) {
  verticalSafeAreaInset = self.view.safeAreaInsets.bottom + self.view.safeAreaInsets.top
} else {
  verticalSafeAreaInset = 0.0
}
let safeAreaHeight = self.view.frame.height - verticalSafeAreaInset

由于运行 iOS 9 和 10 的设备没有安全区域,因此默认为 0.0 是安全的。

【讨论】:

  • 这很有教育意义!
猜你喜欢
  • 1970-01-01
  • 2021-05-03
  • 2018-05-25
  • 2012-10-11
  • 2018-05-26
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
相关资源
最近更新 更多