web-dev-qa-db-fra.com

Image du bouton de la barre de navigation

J'utilise ce code pour obtenir un logo sur ma barre de navigation. 

override func viewDidAppear(animated: Bool) {

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

C'est bien, mais le logo n'a pas de couleur - à part le «bleu». Est-ce parce que c'est un fichier png. Y a-t-il quelque chose que je peux pour qu'il conserve les couleurs d'origine 

Je l'ai fait: 

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

et cela amène l'image sur la barre de navigation avec les couleurs correctes - mais c'est au milieu et je le veux à gauche.

14
Jason

Vous devez déclarer que l'image reste originale tout le temps. alors ajoutez le code ci-dessous

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

Dans Swift 3 la même chose serait accomplie en utilisant la syntaxe suivante

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

Swift 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

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

Objectif 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;

Pour withRenderingMode (_ :) les détails, voir ci-dessous le lien vers la documentation Apple https://developer.Apple.com/documentation/uikit/uiimage/1624153-withrenderingmode }

1
Ashish

Dans Swift 3.0

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

Swift 3 Si l'élément est manquant, vous pouvez essayer ceci.

  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)
0
Jerome