ios 隐藏带动画的状态栏

ios hide status bar with animated

我想在页面切换时禁用导航栏动画。,

root viewController

- (BOOL)prefersStatusBarHidden{
    return YES;
}
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];,
}

已推 viewController

- (BOOL)prefersStatusBarHidden{
    return NO;
}
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:animated];,
}

如果两个页面 statusBarHidden 都等于 NO 或 YES,此方法有效,但当我禁用其中一个时,会出现问题。由于我的声誉很低,我无法上传图片,请检查 link 以获取图片。 https://www.facebook.com/photo.php?fbid=154038544933435&set=a.154038594933430.1073741827.100009818700445&type=1&theater

实施 prefersStatusBarHidden 应该可以解决问题。无需覆盖 viewWillAppear:animated,因为 iOS 会自动从一个状态栏状态切换到下一个状态。

请务必将 Info.plist 中的 "View controller-based status bar appearance" 设置为 YES。

就导航栏而言。如果您使用故事板并使用 Segueues,您可以从一个导航控制器转换到另一个。如果导航控制器 A 有一个可见的导航栏,而导航控制器 B 有一个隐藏的导航栏,iOS 将自动为您动画导航栏。

你应该使用这个它对我的 Tab 手势有效

NSTimer *timer;
if([UIApplication sharedApplication].statusBarHidden == YES)
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
    timer= [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(hideStatusbar) userInfo:nil repeats:NO];
}

调用方法

-(void)hideStatusbar
{
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}