Transparent UINavigationBar in Swift Transparent UINavigationBar in Swift ios ios

Transparent UINavigationBar in Swift


Hope it help you

Swift 2:

self.navigationController.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)self.navigationController.navigationBar.shadowImage = UIImage()self.navigationController.navigationBar.isTranslucent = trueself.navigationController.view.backgroundColor = UIColor.clearColor()

Swift 4.2 to Swift 5.1

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)self.navigationController?.navigationBar.shadowImage = UIImage()self.navigationController?.navigationBar.isTranslucent = trueself.navigationController?.view.backgroundColor = UIColor.clear

Or If you want to sublcass the navigation controller then refer this answer.


Change the status bar style via :

In your Info.plist you need to define View controller-based status bar appearance to any value.

enter image description here

UIApplication.shared.statusBarStyle = .lightContent

If you want to hide the status bar:

UIApplication.shared.isStatusBarHidden = true

Getting this output by light content and by transparent navigation. I have view background is gray. you can see the transparency.

enter image description here

iPhone XR - Swift 4.2 - Large Titles (Test Screenshot)

Large Titles - Swift - iPhone XR


If you're using Swift 2.0 uses the code block below:

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

For Swift 3.0 use:

navigationController?.setNavigationBarHidden(false, animated: true)navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)navigationController?.navigationBar.shadowImage = UIImage()navigationController?.navigationBar.isTranslucent = true


Swift 3.0.1 with Xcode 8.1

In your UINavigationController

override func viewDidLoad() {    super.viewDidLoad()    self.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)    self.navigationBar.shadowImage = UIImage()    self.navigationBar.isTranslucent = true    self.view.backgroundColor = UIColor.clear}