iPhone X 状态栏高度

11

我开发了一个应用程序,没有使用autoLayoutinterface-builder,全部使用代码完成。在所有的iPhones上运行良好,但在iPhone X上,顶部栏停留在中间的新黑色区域下面。

可以通过代码获取该高度,因此我可以将我的Navigationbar向下移动该高度,以使一切正常运行?

我看到的解决方案都使用自动布局。

我只想获取距离以将其向下移动。

2个回答

15

在我的 Swift 应用程序中,我使用以下代码获取状态栏的 frame

Swift:UIApplication.shared.statusBarFrame

Objective-C:[UIApplication sharedApplication].statusBarFrame

这是一个CGRect对象,因此您可以通过对其执行size.height操作来获取其高度。因此,在 Objective-C 中,您可以这样做:

[UIApplication sharedApplication].statusBarFrame.size.height

10

您可以通过以下方式获取状态栏高度,无论状态栏是否被隐藏:

UIApplication.shared.keyWindow!.safeAreaInsets.top

和主屏幕指示器

UIApplication.shared.keyWindow!.safeAreaInsets.bottom

如果是横屏的话,该值将会改变

而且safeAreaLayoutGuide也在那里。


请注意,安全区域插图包括工具栏和导航栏等内容。https://developer.apple.com/documentation/uikit/uiview/2891103-safeareainsets - dwsolberg
"safeAreaInsets" 仅适用于 iOS 11.0 或更高版本。 - user1872384

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接