当navigationBar.isTranslucent为true时,导航栏的backgroundImage也变为半透明

时间:2017-05-23 07:19:23

标签: ios objective-c swift uinavigationbar navigationbar

在我的第一页中,导航栏应该是透明的,当推送到下一页时,导航栏应该是图像。我通过更改_UIBarBackground_UINavigationBarBackground的alpha来解决问题。

但我遇到了一个大问题,在第一页中,视图应放置并从(0,0)绘制,因此我将导航栏的isTranslucent设置为true,一切正常。但是当我进入下一页时,背景图像显示出半透明的外观,我不想要。

顺便说一句,我使用以下方式设置背景:

navVC.navigationBar.setBackgroundImage(UIImage(named: "navigation_bar_background"),
                                       for: .default)

enter image description here

我检查了这里使用的图像,它不是半透明的。

这个问题该怎么办?由于动画时丑陋的外观,我不希望将viewController的extendedLayoutIncludesOpaqueBars设置为true。

1 个答案:

答案 0 :(得分:0)

这两种解决方案的结合将有所帮助。

http://ioscodeguide.blogspot.in/2014/01/navigation-bar-bagground-image.html

http://ioscodeguide.blogspot.in/2014/01/navigation-bar-font-style-and-font.html

在第一个视图中:

self.navigationController.navigationBar.tintColor = [UIColor clearColor];
self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

在第二个视图中:

使用以下链接将图像设置到导航栏。

How to set Navigation Bar Bagground image - By - iOSCodeGUIDE

添加到那个 要在第一页中保持导航栏透明并在第二页上显示,

第一页面视图将显示隐藏 - 是NavigationBarHide,并且在视图上确实消失隐藏 - 否