ios - 状态栏在关闭模态视图后保持隐藏状态并在几秒钟后出现

标签 ios swift xcode6 statusbar

我有一个很奇怪的行为:

我有一个带有导航 Controller (导航栏)的应用程序,其中状态栏是可见的。 然后我在我想隐藏状态栏的地方模态地呈现一个 View Controller (使用相机的条形码扫描仪),所以我实现了:

override func prefersStatusBarHidden() -> Bool {
    return true
}

当我使用

关闭模态呈现的 View 时
self.dismissViewControllerAnimated(true, completion: nil)

View 消失,状态栏保持隐藏状态,尽管 rootviewcontroller 实现了

override func prefersStatusBarHidden() -> Bool {
    return false
}

但几秒钟后状态栏会自动出现!?

我在 StackOverflow 上尝试了一个解决方案:

UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.Fade)
self.dismissViewControllerAnimated(true, completion: nil)

但这对我来说没有任何改变。

也许我可以在 viewDidAppear 的 Root View 中进行刷新??

最佳答案

您是否可能从后台线程调用 dismissViewControllerAnimated

如果是这样,请尝试将调用(​​以及任何其他对 UIKit 的调用,因为它不是线程安全的)包装在 GCD 回调中返回到主队列,如下所示:

dispatch_async(dispatch_get_main_queue()) {
 self.dismissViewControllerAnimated(true, completion: nil)
}

关于ios - 状态栏在关闭模态视图后保持隐藏状态并在几秒钟后出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27756361/

相关文章:

ios - 如何根据手机旋转来旋转 Sprite

swift - 需要导入 UIKit 的新项目文件

ios - XCode 6 - 自动布局

iOS swift : Separate AppDelegate for XCTest

ios - UITableView 数据源/重新加载竞争条件

swift - 如何从 SecCertificate 中提取或比较 kSecPropertyKeyValue

swift - 如何在 Xcode macOS Cocoa 应用程序中嵌入和流式传输来自网络的视频?

ios - 数组在枚举时发生了变异 - Swift

ios - 设置 navigationController.interactivePopGestureRecognizer.delegate = self 时,UIControllerView 向后滑动停止工作;

android - React Native - 选择多种样式