导航控制器弹出动画时导航栏向上移动

Posted

技术标签:

【中文标题】导航控制器弹出动画时导航栏向上移动【英文标题】:Navigation Bar move up while pop animation of Navigation Controller 【发布时间】:2016-05-14 16:02:43 【问题描述】:

在我的根视图中,我创建了一个导航控制器并将其添加到状态栏下方 20 像素处。

我的导航视图控制器

状态栏显示正常。

当我点击返回时,(屏幕截图的冻结动画)。

动画发生时视图向上移动。和 完成后,状态栏会重新出现。

代码:这就是我将导航控制器添加到我的 VC 的方式

在根视图中:

navController = [[UINavigationController alloc]initWithRootViewController:myView];

navController.navigationBar.translucent = YES;
navController.view.autoresizingMask = UIViewAutoresizingNone;

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) 
    CGRect frame=navController.view.frame;

    frame.origin.y += 20;
    frame.size.height-=20;
    navController.view.frame=frame;

【问题讨论】:

【参考方案1】:

所以我相信这是你的问题

frame.origin.y += 20;
frame.size.height-=20;
navController.view.frame=frame;

每次加载视图时都会调用它。我相信,如果您多次前进和后退,您的窗户上的景色就会上升。是吗?如是。确保只调用一次。

希望对你有帮助。

【讨论】:

谢谢。这是有道理的,但不,它只被调用一次。【参考方案2】:

这个答案对我帮助很大。

Push / Pop View Controller With Navigation Bar from View Controller Without Navigation Bar

我用第一个 VC 添加我的导航控制器,它希望隐藏导航栏

我在下面的 sn-p 中将其命名为 animated:NO。正确的用法必须是使用委托本身的动画 boolean

在 VC1 中:应该隐藏导航栏

我必须像下面这样隐藏导航栏。

-(void)viewWillAppear:(BOOL)animated 
    // Hide the bar with animation how viewWillAppear is called
    [self.navigationController setNavigationBarHidden:YES animated:animated];

当我将 VC2 推送到 VC1 时,我需要重新启用导航栏。所以在 VC1 本身中,在消失期间我会执行以下操作。

-(void)viewWillDisappear:(BOOL)animated
    // Show the bar with animation how viewWillDisappear is called
    [self.navigationController setNavigationBarHidden:NO animated:animated];

在 VC2 中:应显示导航栏

当我在 VC2 中按回时,我实际上不得不再次隐藏导航栏。所以,我在 viewWillDisappear 中这样做。

-(void)viewWillDisappear:(BOOL)animated
    // Hide the bar with animation how viewWillAppear is called
    [self.navigationController setNavigationBarHidden:YES animated:animated];

主键是animated:animated 而不是animated:NO .. 难以置信!

【讨论】:

以上是关于导航控制器弹出动画时导航栏向上移动的主要内容,如果未能解决你的问题,请参考以下文章

多次推送和弹出动画 NO 后导航栏的奇怪行为。 IOS 7

将右 barbuttonitem 添加到导航控制器 iphone sdk 后视图向上移动

UITableView:向上滑动时收缩标签栏和导航栏

如何在ios中自定义推送和弹出动画时将视图传递给另一个控制器? [关闭]

将带有可见导航栏的视图控制器弹出到带有隐藏导航栏的视图控制器时,带有 interactivePopGestureRecognizer 的黑色区域

搜索显示控制器如何隐藏导航栏?