透明导航栏(swift 3)

时间:2016-11-28 00:02:52

标签: ios swift swift3 uinavigationbar

我做了以下操作,使导航栏只是白色。

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

所以我将每个UIViewController设置为"不在top / bot bar"下面。这看起来像我想要的。但是当我制作一个UIImagePicker时,它看起来像这样: navigation Bar

所以我尝试了以下内容:

let imagePicker = UIImagePicker()
imagePicker.edgesForExtendedLayout = []

但它不起作用。我该怎么做?

请问!

3 个答案:

答案 0 :(得分:8)

默认情况下导航栏是否为白色?像

一样
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

将背景设置为没有数据的图像,因此它将是透明的。如果您确实需要设置导航栏的颜色,请使用

UINavigationBar.appearance().barTintColor = UIColor.white

而不是将背景设置为图像。你可能需要

self.navigationController!.navigationBar.isTranslucent = false

每个viewController的viewDidLoad内部,但首先尝试不使用它

答案 1 :(得分:3)

我不得不补充道:

UINavigationBar.appearance().isTranslucent = false

进入我的AppDelegate。

感谢Fonix和dfd

答案 2 :(得分:1)

在你的AppDelegate didFinishLaunchingWithOptions中尝试这个:

UINavigationBar.appearance().barTintColor = UIColor.white
UINavigationBar.appearance().isTranslucent = false

// these next lines aren't needed if you like the default

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.black]  // shouldn't be needed, but if you want something 
UINavigationBar.appearance().tintColor = UIColor.blue

我很确定你需要将isTranslucent设置为false。