带有动画

时间:2015-08-24 15:17:16

标签: ios objective-c uinavigationcontroller

我想在页面更改时禁用导航栏动画。

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,则此方法有效,但当我禁用其中一个时,会出现问题。由于我的声誉很低,我无法上传图片请查看图片链接。 https://www.facebook.com/photo.php?fbid=154038544933435&set=a.154038594933430.1073741827.100009818700445&type=1&theater

2 个答案:

答案 0 :(得分:0)

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

务必设置"查看基于控制器的状态栏外观"在您的Info.plist中为YES。

Set this to YES

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

答案 1 :(得分:0)

你应该使用它,它在标签手势上为我工作

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];
}