4

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
  • 174
  • 4
  • 15

4 Answers4

13

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
  • 8,826
  • 1
  • 29
  • 47
Anbu.Karthik
  • 80,161
  • 21
  • 166
  • 138
0

Set your imageview's content mode like,

 imageView.contentMode = .ScaleAspectFit
Ketan Parmar
  • 26,610
  • 9
  • 47
  • 70
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
  • 871
  • 9
  • 18