5

I have tried a couple different codes but couldn't make the logo show

import UIKit 
class HomeViewController: UIViewController { 

override func viewDidLoad() { 
super.viewDidLoad() 

let logo = UIImage(named: "logo.png") 
let imageView = UIImageView(image: logo) 
self.navigationItem.titleView = imageView
navigationItem.titleView?.sizeToFit() 
 } 
}

I even tried to include IB in the class itself didn't work either, it doesn't seem to work that way

@IBOutlet weak var navBar: UINavigationItem!

PS. My logo is a 200x40px png and its named logo.png in the assets.

My storyboard

http://i68.tinypic.com/b68t8o.png

Any help is appreciated

Edit: I solved my problem by putting an image view there instead of this whole navigation item story. Thanks for your suggestions though.

Mert Alnuaimi
  • 342
  • 8
  • 17

4 Answers4

14

try this

 let logo = UIImage(named: "logo.png") 
 let imageView = UIImageView(image: logo) 
 imageView.contentMode = .ScaleAspectFit // set imageview's content mode
 self.navigationItem.titleView = imageView 
dahiya_boy
  • 9,298
  • 1
  • 30
  • 51
Anbu.Karthik
  • 82,064
  • 23
  • 174
  • 143
0

Set your imageview's content mode like,

 imageView.contentMode = .ScaleAspectFit
Ketan Parmar
  • 27,092
  • 9
  • 50
  • 75
0

This code looks good, i think there is error in name of UIImage, did you debug and check that let logo is not nil? try to remove ".jpg"

Yerken
  • 299
  • 1
  • 12
0

Use extension:

extension UIViewController {
    func setNavigationBarLogo() {
        let logo = UIImage(named: "YourLogo.png")
         let imageView = UIImageView(image: logo)
        imageView.contentMode = .scaleAspectFit
         self.navigationItem.titleView = imageView
    }
}

Usage in UIViewController:

 override func viewDidLoad() {
        super.viewDidLoad()
        self.setNavigationBarLogo()
    }
user1039695
  • 981
  • 11
  • 20