创建一个透明的 NavigationBar

Create a Transparent NavigationBar

我想知道我们如何创建一个完全透明 (alpha = 0) 但 BarButton Item 仍然可见的 UINavigationBar。

我想要一个不可见的 NavigationBar,但我需要 BarButtonItem 可见。

我找到了一个方法:

创建UINavigationBar的子class,并将其交给导航控制器使用。

class NavigationBar: UINavigationBar {
    // An empty implementation will make the view to be transparent
    override func drawRect(rect: CGRect) {
    }
}

如果您使用的是 InterfaceBuilder,那么您可以 select 导航控制器,然后 select 它的导航栏,然后适当地更改它的 class。

如果您以编程方式进行:

let navController = UINavigationController(navigationBarClass: NavigationBar.self, toolbarClass: nil)
...

带有 UIBarButtonItem 的结果:

希望对您有所帮助


旧答案:

我很久以前尝试过 (ios6)。基本上是可以的。 将导航栏的颜色设为UIColor.clearColor()。按钮需要是 UIBarButton 内的自定义 UIViews,以便按您想要的方式显示。我想你也需要调整导航栏后面的视图的颜色。

截图

Swift

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

OC

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];