我有一个带有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
。我认为上述方法更为复杂。
感谢任何想法!
答案 0 :(得分:0)
您看到的黑色是主窗口的背景颜色。您可以通过AppDelegate didFinishLaunchingWithOptions
方法将背景图像或颜色设置为主窗口(这完全取决于您的视图控制器B的设计),这样您就不会发现任何差异。
否则
您只需使用viewDidAppear
而不是viewWillAppear
,但这只会轻而易举。