我开发了一个应用程序,没有使用autoLayout
或interface-builder
,全部使用代码完成。在所有的iPhones
上运行良好,但在iPhone X
上,顶部栏停留在中间的新黑色区域下面。
可以通过代码获取该高度,因此我可以将我的Navigationbar
向下移动该高度,以使一切正常运行?
我看到的解决方案都使用自动布局。
我只想获取距离以将其向下移动。
在我的 Swift 应用程序中,我使用以下代码获取状态栏的 frame
:
Swift:UIApplication.shared.statusBarFrame
Objective-C:[UIApplication sharedApplication].statusBarFrame
这是一个CGRect
对象,因此您可以通过对其执行size.height
操作来获取其高度。因此,在 Objective-C 中,您可以这样做:
[UIApplication sharedApplication].statusBarFrame.size.height
您可以通过以下方式获取状态栏高度,无论状态栏是否被隐藏:
UIApplication.shared.keyWindow!.safeAreaInsets.top
和主屏幕指示器
UIApplication.shared.keyWindow!.safeAreaInsets.bottom
如果是横屏的话,该值将会改变
而且safeAreaLayoutGuide
也在那里。