2016-03-08 17 views
3

我在UINavigationController中。 UINavigationController有3个视图控制器。前两个是tableViewControllers,最后一个是一个常规的视图控制器,嵌入了PageViewController。试图使导航栏清除,并且它是黑色的

我正在使用的第三视图控制器下面的代码在堆栈,使UINavigationBar的明确:

navigationController?.navigationBar.shadowImage = UIImage() 
    navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 

我把这个代码在堆栈中的第三视图控制器。这是嵌入了UIPageViewController的视图控制器。但导航栏是黑色的。但是,当我从堆栈中弹出第三个控制器并返回到第二个控制器时,UITableViewController的导航栏已经清除。

我看了很多其他的问题,在这里:How to make completely transparent navigation bar in iOS 7和这里:Transparent UINavigationBar in Swift但没有任何工作。

我做错了什么?上面的两行代码是我使用的唯一代码,但我也尝试了上面链接中的建议,没有任何工作。下面是黑色的导航栏的照片:

enter image description here

+0

你能告诉我们你试图操纵navigationBar的视图控制器的生命周期中的哪个部分,以及你如何呈现第三个视图控制器?这听起来像你的代码工作(当你从堆栈中弹出第三个VC是透明的时候吧),但它发生得太晚了。你有没有尝试把导航栏代码放在第三个VC的位置? – ackerman91

+0

你可以设置'self.navigationController?.navigationBar.barTintColor = .clearColor()',而不是设置图像 – iamalizade

+0

我已经在1)viewDidLoad,2)viewWilAppear和3)prepareForSegue在第2视图控制器。正如我所说,当我回去的时候,第二风投的导航栏很清晰。但是当我回到第一个时,它又是黑色的。这是一个45秒的youtube视频显示问题:https://www.youtube.com/watch?v=ubNBMmt2oLU – joey

回答

5

什么工作对我来说,当我用同样的问题所困扰,是子类NavigationController,并在viewDidLoad方法使用:

self.navigationBar.translucent = YES; 
self.navigationBar.shadowImage = [UIImage new]; 
[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 

另一个原因可能是您的ViewController不会在你的UINavigationBar延长,以及为什么你看到的黑色部分,多数民众赞成,尝试在你的ViewContorller

viewDidLoad设置此
self.edgesForExtendedLayout = UIRectEdgeTop; 
+0

。谢谢。 – iroiroys