iOS7以前,设置statusBar的方式一般都是通过application的setStatusBarHidden方法来实现,这个方法是针对整个应用的,一旦状态更改了,影响到所有的viewController,而iOS9以后这个方法就被弃用了。
代替的方法是覆盖viewcontroller的prefersStatusBarHidden方法。
步骤如下:
1. 更改应用plist中的UIViewControllerBasedStatusBarAppearance 设置为Yes
2. 覆盖viewController的prefersStatusBarHidden方法,如果需要隐藏statusBar,就返回Yes,否则返回no。对比setStatusBarHidden来说,实现了viewController互相之间的设置不受影响。
3. 如果需要动态刷新statusBar的状态,需要手动调用viewController的setNeedsStatusBarAppearanceUpdate方法。