我有一个带有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
被调用。就我而言,似乎无法解决。
我提出了一些方法:
- 使用不同的
UINavigationBar
。 - 使用不同的
UINavigationController
。但是UINavigationController
无法推动新的UINavigationController
- 自定义
UIView
喜欢UINavigationBar
。
我认为上面的methos更为复杂。
任何想法谢谢!
您看到的黑色是主窗口的背景颜色。您可以从AppDelegate didFinishLaunchingWithOptions
方法将背景图像或颜色设置为主窗口(这完全取决于您的视图控制器的设计b),因此您不会看到任何区别。
否则
简单地您可以使用viewDidAppear
而不是使用viewWillAppear
,但是很少有轻弹。