ios 导航栏按钮图像

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/28299433/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 04:39:03  来源:igfitidea点击:

Navigation bar button image

iosswiftuinavigationcontrolleruinavigationbar

提问by Jason

I am using this code to get a logo on my nav bar.

我正在使用此代码在我的导航栏上获取徽标。

override func viewDidAppear(animated: Bool) {

    let image = UIImage(named: "LogoWithTextSmaller.png")
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
    }

This is fine, but the logo doesn't have any colour - besides 'blue'. Is it because it is a png file. Is there something I can so it retains the original colours

这很好,但徽标没有任何颜色 - 除了“蓝色”。是不是因为它是一个png文件。有什么我可以的,所以它保留了原来的颜色

I have done this:

我已经这样做了:

self.navigationItem.titleView = UIImageView(image: image)

and that brings the image onto the nav bar with the correct colours - but it's in the middle and I want it on the left.

这会将图像以正确的颜色带到导航栏上 - 但它在中间,我希望它在左边。

回答by bhavik shah

You need to declare that the image stays original all the time. so add the code as below

您需要声明图像始终保持原始状态。所以添加如下代码

var image = UIImage(named: "image-name")
image = image?.withRenderingMode(.alwaysOriginal)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style:.plain, target: nil, action: nil)

回答by CoderJimmy

In Swift 3the same would be accomplished using the following syntax

Swift 3 中,同样可以使用以下语法完成

var image = UIImage(named: "Filter")
image = image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image:image , style: UIBarButtonItemStyle.plain, target: nil, action: nil)

回答by Ashish

Swift 3.0

斯威夫特 3.0

let btnLogo = UIButton(frame: CGRect(x: 0, y: 0, width: 25, height: 25))
btnLogo.setTitle("", for: .normal)
btnLogo.backgroundColor = UIColor.clear
btnLogo.layer.cornerRadius = 4.0
btnLogo.layer.masksToBounds = true

var imageLogo = UIImage(named: "LogoWithTextSmaller.png")
imageLogo = imageLogo?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
btnLogo.setImage(imageLogo, for: .normal)

let barButton = UIBarButtonItem(customView: btnLogo)
self.navigationItem.leftBarButtonItem = barButton

swift 2.0

快速 2.0

var image = UIImage(named: "Filter")
image = image?.imageWithRenderingMode(UIImageRenderingMode.alwaysOriginal)

Objective-C

目标-C

 UIImage *image = [[UIImage alloc] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

 UIBarButtonItem *_btnLeftBar = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"LogoWithTextSmaller.png"]
                                                      style:UIBarButtonItemStylePlain
                                                     target:self
                                                     action:@selector(yourMethod)];

 self.navigationItem.rightBarButtonItem= _btnLeftBar;

For withRenderingMode(_:) details see below apple documentation link https://developer.apple.com/documentation/uikit/uiimage/1624153-withrenderingmode

有关 withRenderingMode(_:) 详细信息,请参阅下面的苹果文档链接 https://developer.apple.com/documentation/uikit/uiimage/1624153-withrenderingmode

回答by ronak patel

In swift 3.0

在快速 3.0

    let Navigateimage = UIImage(named: "LogoWithTextSmaller.png")
    Navigateimage = Navigateimage?.withRenderingMode(.alwaysOriginal)
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: Navigateimage, style:.plain, target: nil, action: nil)

回答by Jerome

Swift 3If the item is missing, you can try this.

Swift 3如果物品丢失,你可以试试这个。

  let navigationBar = navigationController?.navigationBar
  let topItem = navigationBar?.topItem
  var navigateimage = UIImage(named: "addConnectionFromSupport")
  navigateimage = navigateimage?.withRenderingMode(.alwaysOriginal)
  topItem?.rightBarButtonItem = UIBarButtonItem(image: navigateimage, style:.plain, target: nil, action: nil)

回答by S. Bharti

SWIFT 4

快速 4

    let back = UIImage(named: "back_white")?.withRenderingMode(.alwaysOriginal)
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: back, style:.plain, target: nil, action: nil)