3

我有一个 iOS 应用程序,在 UINavigationController 中设计。然而,其中一个推送的视图控制器需要全屏视图,顶部没有导航栏。(要返回,只有一个小的圆形按钮)。但是,我尝试过的任何“隐藏”导航栏(navigationCtl.navigationBar.hidden=TRUE)的方法都会给我留下难看的伪影——在视图被推送之前调用(在 viewDidLoad 或 viewWillAppear 中)会导致之前的视图控制器栏左滑动画开始时闪烁白色。类似地,在 viewDidAppear 中调用它会在第二个视图的顶部留下一个白条,同时还有几个向下推的子视图。有什么办法可以让新视图像往常一样滑过,但是当它出现时,顶部根本没有导航栏?


请注意,为了帮助谷歌,这里的问题基本上是:

如何在两个 UIViewController 之间进行动画处理,一个在顶部有导航栏,另一个在顶部没有导航栏。那么,如何从带有导航栏的 UIViewController 导航到不带导航栏的 UIViewController - 避免可怕的闪烁。

Ev 在下面给出了惊人的答案……太棒了。

4

1 回答 1

11

试一试,看看它是如何为您工作的。

在 viewWillAppear 的目标视图控制器中

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

它实际上具有很酷的效果并且很有用。在 viewWillAppear 中,一切都发生在视图显示之前,因此它消除了奇怪的工件。

好起来

于 2012-08-16T04:04:28.793 回答