首页 文章

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

提问于
浏览
5

我正在尝试使用Swift将图像徽标作为 Headers 放置在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 回答

  • 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)
        } 
    }
    
  • 0

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

    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

    尝试使用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);
    

相关问题