如何在iOS应用程序的导航栏中设置图像标题

时间:2014-07-28 12:45:09

标签: ios swift

我正在尝试使用Swift将图像徽标作为标题放置在iOS应用的导航栏中。我将图像包含在资源文件夹(Images.xcassets)中。我调查了this问题,但没有运气。

以下是我的代码:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let logo = UIImage(named: "logo") as UIImage
        let imageView = UIImageView(image:logo)
        imageView.frame.size.width = 200;
        imageView.frame.size.height = 45;

        self.navigationItem.titleView = imageView
    }

...

}

3 个答案:

答案 0 :(得分:4)

我设法创建了一个Swift解决方案。不确定它是否是最佳方式,但它确实有效。我基本上翻译了nerowolfe的代码,并使用了addSubview函数。

class NavigationBar: UINavigationBar {

    init(frame: CGRect) {
        super.init(frame: frame)
        initialise()
    }

    init(coder aDecoder: NSCoder!){
        super.init(coder: aDecoder)
        initialise()
    }

    func initialise(){

        let logo = UIImage(named: "logo");
        let imageView = UIImageView(image:logo)
        imageView.frame.size.width = 145;
        imageView.frame.size.height = 33;
        imageView.frame.origin = CGPoint(x: 2, y: 8)

        addSubview(imageView)
    } 
}

答案 1 :(得分:2)

你只是错过了?当您声明图像时,也可能想要添加内容模式:

let logo = UIImage(named: "logo") as UIImage?
    let imageView = UIImageView(image:logo)
    imageView.frame.size.width = 200;
    imageView.frame.size.height = 45;
    imageView.contentMode = UIViewContentMode.ScaleAspectFit

    self.navigationItem.titleView = imageView

答案 2 :(得分:0)

尝试使用addSubview方法将UIImageView添加到导航栏。这是Objective-C中的代码:

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon-vysk-white"]];
[self.navigationController.navigationBar addSubview:imgView];


imgView.contentMode = UIViewContentModeScaleAspectFit;
imgView.frame = CGRectMake(140, 0, 40, 40);
相关问题