我在iOS 8中新的自动隐藏状态栏时遇到了很多麻烦.
在我的应用程序中,我有一个视图,当用户点击一次时,导航栏和状态栏消失.
在横向时,状态栏会自行隐藏,对我来说没问题.我只需要在纵向模式下使用它.
但问题是当设备是横向并且显示条形时,当用户点击两次以切换条形(如此显示),并且以纵向模式转动设备时,状态栏仍然是隐藏的.
基本上我需要能够隐藏statusBar而不会干扰它在iOS 8上的自然行为,所以我回顾一下这个场景:
我试图在willRotate上调整statusBar,但是我弄得一团糟,其中statusBar在不应该的时候可见.我正在使用的代码:
- (BOOL)prefersStatusBarHidden
{
return statusBarHidden;
}
-(void)toggleBars:(UITapGestureRecognizer *)gesture{
CATransition *animation = [CATransition animation];
animation.type = kCATransitionFromBottom;
animation.subtype = kCATransitionFromTop;
animation.duration = .2f;
[animation setTimingFunction:[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut]];
BOOL toggleNavigationBar = self.navigationController.navigationBarHidden;
[self.navigationController.navigationBar.layer addAnimation:animation forKey:nil];
[self.navigationController setNavigationBarHidden:!toggleNavigationBar animated:YES];
BOOL toggleTabHidden = self.tabBarController.tabBar.hidden;
if(![[[NSUserDefaults standardUserDefaults] objectForKey:@"showTabBar"]isKindOfClass:[NSNull class]]){
if([(NSNumber*)[[NSUserDefaults standardUserDefaults] objectForKey:@"showTabBar"]boolValue])
{
[self.tabBarController.tabBar.layer addAnimation:animation forKey:nil];
[self.tabBarController setHideTabBar:!toggleTabHidden animated:YES];
}
}
statusBarHidden = …Run Code Online (Sandbox Code Playgroud)