@IBOutlet var navBar: UINavigationBar!
self.navBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navBar.shadowImage = UIImage()
如果视图控制器嵌入在导航控制器中并使用self.navigationController?.navigationBar.setBack
...等,则上述代码有效,但在使用IBOutlet时它不起作用(我的示例未嵌入导航控制器中)。导航栏不是半透明的。
有什么想法吗?
答案 0 :(得分:8)
将它放在你的视图控制器中(不在uinavigationbar中)。
[[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[UIImage new]];
答案 1 :(得分:3)
您究竟在哪里调用NavBar的外观设置?当我尝试以下内容时:
[self.myNC.navigationBar setShadowImage:[UIImage new]];
[self.myNC.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
我有所期望的效果。你能给我们提供一些更多的背景吗?
答案 2 :(得分:2)
如果您使用没有导航视图控制器的导航栏,则可以尝试设置navigationBar.clipsToBounds = YES
。我有一个单独的UIToolbar
,这种方法现在有效。
答案 3 :(得分:0)
这适用于导航栏的IBOutlet。
@IBOutlet weak var navigationBar: UINavigationBar!
override func viewDidLoad() {
super.viewDidLoad()
navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
navigationBar.shadowImage = UIImage()
}
仔细检查导航栏是否已设置为视图控制器的参考插座。
这是一个示例项目,显示它按预期工作: http://bjtitus.s3.amazonaws.com/NavBarBorderTest.zip