如何在IOS 11之前以编程方式获取安全区的高度?

Boo*_*unz 2 layout uiview ios swift safearealayoutguide

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

我无法将插座设置为安全区域,因为它不是UIView ...甚至不是任何种类的类。

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

还有其他方法吗?

小智 10

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

let safeAreHeight = self.view.frame.height - self.topLayoutGuide.length - self.bottomLayoutGuide.length
Run Code Online (Sandbox Code Playgroud)

对于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
Run Code Online (Sandbox Code Playgroud)

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

  • 那是很有教育意义的! (2认同)