我有一个几乎完全使用 Xcode Interface Builder 构建的应用程序,除了覆盖
supportedInterfaceOrientations
将 UIViewControllers
方向修复为纵向或横向之外,没有任何代码。该应用程序由两个视图控制器组成:
UINavigationController
中并具有导航栏。该视图控制器的方向是纵向固定的。当按下第二个视图控制器中的按钮时,VC 滑出窗口,一旦动画结束,状态栏就会出现在导航栏上方,部分重叠(注意:按下状态时布局会自行修复) 。您可以在以下视频中查看问题:https://imgur.com/FIBoszM
以下屏幕截图显示了“实际”(左)和“预期”(右)行为。
为什么会出现这种情况?
这不是 iOS 错误。不幸的是,目前react-native中没有API让我们能够获取当前状态栏高度并监听变化,所以我们无法自动处理这个问题。 facebook/react-native#20999
您可以尝试此解决方法来解决此问题:
open override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(updateStatusBar), name: Notification.Name.UIWindowDidBecomeKey, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(updateStatusBar), name: Notification.Name.UIDeviceOrientationDidChange, object: nil)
}
StatusBar
更新方法:
@objc func updateStatusBar() {
UIApplication.shared.isStatusBarHidden = UIApplication.shared.statusBarOrientation.isLandscape setNeedsStatusBarAppearanceUpdate()
}
您还可以按照以下解决方案: