mah*_*ega 6 statusbar ios swift xcode6
我有一个非常奇怪的行为:
我有一个带导航控制器(导航栏)的应用程序,状态栏可见.然后我提出了一个视图控制器(使用相机的条形码扫描仪)模态,我想要隐藏状态栏,所以我实现了:
override func prefersStatusBarHidden() -> Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
当我关闭模态呈现的视图时使用
self.dismissViewControllerAnimated(true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
虽然rootviewcontroller实现了,但视图消失并且状态栏保持隐藏状态
override func prefersStatusBarHidden() -> Bool {
return false
}
Run Code Online (Sandbox Code Playgroud)
但几秒钟后状态栏会自动出现!?
我在StackOverflow上尝试了一个解决方案:
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.Fade)
self.dismissViewControllerAnimated(true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
但这对我没有任何改变.
也许我可以在viewDidAppear的rootview中刷新?
你可能dismissViewControllerAnimated从后台线程调用吗?
如果是这样,请尝试在GCD回调中将调用(以及任何其他对UIKit的调用,因为它不是线程安全的)包装回主队列,如下所示:
dispatch_async(dispatch_get_main_queue()) {
self.dismissViewControllerAnimated(true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
您可能需要调用setNeedsStatusBarAppearanceUpdate视图控制器:
如果视图控制器的状态栏属性(例如隐藏/取消隐藏状态或样式)发生更改,请调用此方法。如果您在动画块内调用此方法,则更改将与动画块的其余部分一起进行动画处理。
通常,这是在 中完成的viewDidLoad,但在您的情况下,最好在 中 执行此操作viewDidAppear,因为您的视图已经加载,并且您将在视图层次结构中进一步关闭视图。尝试这个:
override func viewDidAppear(animated: Bool) {
self.setNeedsStatusBarAppearanceUpdate()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3781 次 |
| 最近记录: |