如何使用导航栏上的图像徽标而不是标题

时间:2016-09-28 06:33:30

标签: ios swift xcode storyboard swift3

我尝试了几个不同的代码,但无法显示徽标

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() 
 } 
}

我甚至试图将IB包括在课堂本身也没有工作,它似乎没有那样工作

@IBOutlet weak var navBar: UINavigationItem!

PS。我的徽标是200x40px png,资产中名为logo.png。

我的故事板

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

感谢任何帮助

编辑:我通过在那里放置图像视图而不是整个导航项目故事来解决我的问题。谢谢你的建议。

4 个答案:

答案 0 :(得分:12)

试试这个

 let logo = UIImage(named: "logo.png") 
 let imageView = UIImageView(image: logo) 
 imageView.contentMode = .ScaleAspectFit // set imageview's content mode
 self.navigationItem.titleView = imageView 

或将其添加如下

 let logo = UIImage(named: "logo.png") 
 let imageView = UIImageView(image: logo) 
 imageView.contentMode = .ScaleAspectFit // set imageview's content mode
 self.navBar.topItem?.titleView = imageView

答案 1 :(得分:0)

设置您的imageview的内容模式,如

 imageView.contentMode = .ScaleAspectFit

答案 2 :(得分:0)

此代码看起来不错,我认为UIImage名称有错误,您是否调试并检查让徽标不是?尝试删除" .jpg"

答案 3 :(得分:0)

使用扩展程序:

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

UIViewController中的用法:

 override func viewDidLoad() {
        super.viewDidLoad()
        self.setNavigationBarLogo()
    }