滑动viewController

时间:2016-06-22 13:46:28

标签: ios uinavigationcontroller uinavigationbar

我有一个带有3个viewControllers的UINavigationController。我们知道三个viewControllers共享一个共同的navigationBar。如果我想将navigationBar设置为完全透明。我可以将代码放在viewWillAppear

 [self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
 [self.navigationBar setShadowImage:[UIImage new]];
 [self.navigationBar setBarTintColor:[UIColor clearColor]];
  self.navigationBar.translucent = YES;

并将其设置回viewWillDisappear

[self setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[self setShadowImage:nil];
[self setBarTintColor:THEME_COLOR];
self.translucent = NO;

我想在viewControllerB中设置UINavigationBar半透明,所以我将代码放在viewControllerB中。但是,当我在popToViewController B中,我可以看到屏幕右上角的黑条。由于viewWillAppear被调用。在我的情况下似乎无法解决。

我提出了一些方法:

  1. 使用不同的UINavigationBar
  2. 使用不同的UINavigationController。但是UINavigationController无法推送新的UINavigationController
  3. 自定义UIView,例如UINavigationBar
  4. 我认为上述方法更为复杂。

    感谢任何想法!

1 个答案:

答案 0 :(得分:0)

您看到的黑色是主窗口的背景颜色。您可以通过AppDelegate didFinishLaunchingWithOptions方法将背景图像或颜色设置为主窗口(这完全取决于您的视图控制器B的设计),这样您就不会发现任何差异。

否则

您只需使用viewDidAppear而不是viewWillAppear,但这只会轻而易举。