我希望iOS 8在两种方向下都能显示状态栏,但这在iOS 7中正常显示。
navigationController.isNavigationBarHidden
返回NO。
为什么iOS 8会这样做?
我希望iOS 8在两种方向下都能显示状态栏,但这在iOS 7中正常显示。
navigationController.isNavigationBarHidden
返回NO。
为什么iOS 8会这样做?
试试这个
在didRotateFromInterfaceOrientation
中添加以下代码
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
编辑
无需在所有视图控制器中编写代码
在plist
中将View controller-based status bar appearance
设置为NO
,并在根视图控制器的viewDidLoad
中添加以下代码即可。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
示例项目
https://www.dropbox.com/s/uumneidk4wom5md/demoStatusBar.zip?dl=0
application:FinishLaunchingWithOptions:
来强制隐藏状态栏。 - Mustafa尝试以下方法在iOS 8中显示横屏模式下的状态栏:
- (BOOL)prefersStatusBarHidden {
return NO;
}
Swift版本
override func prefersStatusBarHidden() -> Bool {
return false
}
Swift 3、Xcode 8、iOS 10、/* ViewController.swift */
override var prefersStatusBarHidden: Bool {
return false
}
viewDidLoad
,而是更好地使用application:didFinishLaunchingWithOptions:
。application:didFinishLaunchingWithOptions:
中强制隐藏状态栏,使用以下代码:[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
完成了,看到了吗!
注意:使用上述setStatusBarHidden:withAnimation
语句是很重要的,以强制隐藏状态栏。
application:didFinishLaunchingWithOptions:
中,您不需要调用[UIApplication sharedApplication]
,因为有一个方法参数application
。因此,只需调用[application setStatusBarHidden:...]
即可。 - Aleksejs MjaliksiOS 8的一个特性是,在横屏模式下状态栏将会被隐藏,这不是一个问题。即使是苹果公司自己的应用程序也有相同的行为。
[self setNeedsStatusBarAppearanceUpdate];
-(BOOL)prefersStatusBarHidden{
return NO;
}
Swift 3
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.setStatusBarHidden(true, with: .none)
UIApplication.shared.setStatusBarHidden(false, with: .none)
///
}
在 Info.plist
文件中添加如下内容:
UIViewControllerBasedStatusBarAppearance
布尔值设为 NO
Swift 3 (截至2017年6月2日)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear()
self.setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden : Bool {
return false
}
- (void)viewWillAppear:(BOOL)animated
{
NSNumber *orientationLeft = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
NSNumber *orientationRight = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:orientationLeft forKey:@"orientation"];
[[UIDevice currentDevice] setValue:orientationRight forKey:@"orientation"];
}