Swift导航栏图像标题

我几个星期前开始在Swift编程。 现在我想定制我的Apps Look。 我想使用标志图像作为导航栏标题而不是明文。

let logo = UIImage(named: "logo.png") self.navigationItem.titleView = logo; 

我得到错误"UIImage is not convertible to UIView"

我search了很多。 但没办法:(

把它放在一个UIImageView里面

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

我用这个 它适用于iOS 8

 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. let image = UIImage(named: "YOURIMAGE") navigationItem.titleView = UIImageView(image: image) } 

这里是一个例子,你可以用CGRect来做到这一点。

 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 38, height: 38)) imageView.contentMode = .ScaleAspectFit let image = UIImage(named: "YOURIMAGE") imageView.image = image navigationItem.titleView = imageView } 

希望这会有所帮助。

你可以使用自定义的UINavigationItem,所以你只需要在Main.storyboard上将YourCustomClass改为“Navigation Item”。

在Swift 3

 class FixedImageNavigationItem: UINavigationItem { private let fixedImage : UIImage = UIImage(named: "your-header-logo.png")! private let imageView : UIImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 37.5)) required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) let tView = imageView tView.contentMode = .scaleAspectFit tView.image = fixedImage self.titleView = tView } } 

这在2015年9月为我工作 – 希望这可以帮助那里的人。

 // 1 var nav = self.navigationController?.navigationBar // 2 set the style nav?.barStyle = UIBarStyle.Black nav?.tintColor = UIColor.yellowColor() // 3 let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) imageView.contentMode = .ScaleAspectFit // 4 let image = UIImage(named: "logo.png") imageView.image = image // 5 navigationItem.titleView = imageView 
  let image = UIImage(named: "Navbar_bg.png") navigationItem.titleView = UIImageView(image: image) let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) imageView.contentMode = .ScaleAspectFit 

对于迅速4,你可以调整imageView的大小

  let logoContainer = UIView(frame: CGRect(x: 0, y: 0, width: 270, height: 30)) let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 270, height: 30)) imageView.contentMode = .scaleAspectFit let image = UIImage(named: "your_image") imageView.image = image logoContainer.addSubview(imageView) navigationItem.titleView = logoContainer