显示透明的uinavigationbar将在刷新视图controller时看到黑色条



我有一个带有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

我认为上面的methos更为复杂。

任何想法谢谢!

您看到的黑色是主窗口的背景颜色。您可以从AppDelegate didFinishLaunchingWithOptions方法将背景图像或颜色设置为主窗口(这完全取决于您的视图控制器的设计b),因此您不会看到任何区别。

否则

简单地您可以使用viewDidAppear而不是使用viewWillAppear,但是很少有轻弹。

最新更新