在UINavigationBar下删除1px边框 - 无法正常工作

时间:2014-12-02 16:57:23

标签: ios objective-c xcode swift xcode6

@IBOutlet var navBar: UINavigationBar!

self.navBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navBar.shadowImage = UIImage()

如果视图控制器嵌入在导航控制器中并使用self.navigationController?.navigationBar.setBack ...等,则上述代码有效,但在使用IBOutlet时它不起作用(我的示例未嵌入导航控制器中)。导航栏不是半透明的。

有什么想法吗?

4 个答案:

答案 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()

}

仔细检查导航栏是否已设置为视图控制器的参考插座。

IBOutlet

这是一个示例项目,显示它按预期工作: http://bjtitus.s3.amazonaws.com/NavBarBorderTest.zip