2

我有一个应用程序,其中第一个屏幕(应用程序的菜单)不需要导航栏,但应用程序的其余部分需要。

我正在使用的代码在菜单屏幕上不存在导航栏并且在应用程序的其他地方存在但大问题是,一旦您返回菜单,导航栏会出现大约一秒钟。然后消失。

这不是一个非常顺利的过渡。

如何使过渡更平滑,以便在我返回菜单屏幕时导航栏甚至不会出现一秒钟?

这是我正在使用的代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {

    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        [self.navigationController setNavigationBarHidden:YES animated:NO];
    }
    return self;
}

- (void)viewDidLoad {
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    [super viewDidLoad];
}

-(void) viewDidAppear: (BOOL)animated {
    [[self navigationController] setNavigationBarHidden:YES animated:NO];

    [super viewDidAppear:animated];
}
4

4 回答 4

2

像这样试试

-(void) viewWillAppear: (BOOL)animated {

    [super viewWillAppear:animated];
    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}

希望它可以帮助你...

于 2013-06-26T10:51:16.500 回答
1

在您的第一个视图控制器中:

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

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

在您的第二个视图控制器中(不需要,但代码清晰的良好做法):

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}
于 2014-04-13T16:48:36.860 回答
0

您可以更新导航栏的 Alpha,而不是隐藏和显示导航栏。它将在过渡期间平滑地动画。对于具有透明导航栏的视图控制器,不要修改导航栏,而是在第二个控制器的视图中手动创建导航栏(或只是后退按钮和标题等)。然后,当从第一个视图控制器转换到第二个视图控制器时,我们将隐藏导航栏。

在您的第二个控制器viewWillDisappear和您的第一个视图控制器上viewWillAppear:,使用 .将导航栏 alpha 设置为零self.navigationController.navigationBar.alpha = 0;。由于这是在动画块中,这将使导航栏在推送动画期间消失。

viewWillAppear在第二个控制器和第一个控制器中将 alpha 设置回一个viewWillDisappear

于 2015-01-09T16:29:03.760 回答
0

在视图中设置此项确实在应用程序的第一个屏幕中消失了

    [[self navigationController] setNavigationBarHidden:NO animated:YES];

而这在 viewdiddisappear 的第二个 VC

 [self.navigationController setNavigationBarHidden:YES animated:NO];
于 2013-08-08T06:13:24.303 回答