prefersStatusBarHidden不被调用
我有一个UITabViewController
– > UINavigationController
– > UIViewController
并希望隐藏和取消隐藏statusBar。 当我调用setNeedsStatusBarAppearanceUpdate()
方法prefersStatusBarHidden
不会被调用。
func fadeOutStatusBar (notification: NSNotification) { statusBarHidden = true self.setNeedsStatusBarAppearanceUpdate() } func fadeInStatusBar (notification: NSNotification) { statusBarHidden = false self.setNeedsStatusBarAppearanceUpdate() } override func prefersStatusBarHidden() -> Bool { return statusBarHidden }
首先, .plist
文件中View controller-based status bar appearance
必须设置为YES 。
- 如果你想在整个应用程序中隐藏状态栏:
对于Objective-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [application setStatusBarHidden:YES]; return YES; }
对于Swift:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool { application.statusBarHidden = true return true }
- 如果您希望状态栏在“ 指定视图控制器 ”中的
.m
文件中消失,只需执行:
对于Objective-C:
- (BOOL)prefersStatusBarHidden { return YES; }
对于Swift:
override func prefersStatusBarHidden() -> Bool { return true }
弄清楚了。 在info.plist文件中:view controller-status bar的外观应该设置为YES
对于swift 3,首先,确保在Info
plist文件中将View controller-based status bar appearance
设置为YES
然后把这个添加到你的视图控制器:
override var prefersStatusBarHidden: Bool { get { return true } }
我希望这有助于未来的人。
也许不是OP问题的解决scheme,但是如果您在应用程序委托中使用了第二个窗口,例如用于显示启animation面,并且在飞溅之后没有隐藏它,那么还可能导致prefersStatusBarHidden
不被调用被显示 – 然后窗口得到导致调用这些function的事件。