【问题标题】:How to set an image title in the navigation bar of an iOS app如何在 iOS 应用的导航栏中设置图片标题
【发布时间】:2015-02-17 08:45:42
【问题描述】:

我正在尝试使用 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
    }

...

}

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我设法创建了一个 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)
        } 
    }
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-12
          • 2012-03-29
          相关资源
          最近更新 更多