web-dev-qa-db-fra.com

L'image UIBarButtonItem reste bleue et pas la couleur d'origine de l'image?

Comment se fait-il que l’icône info.png reste bleue et n’ait pas la couleur originale de cette image? J'utilise le code suivant ci-dessous:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"info.png"]
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:self
                                                                            action:@selector(info:)];
22
Jan

Par défaut, l'image dans les éléments de bouton de la barre de UINavigationBar est rendue en mode modèle. Vous pouvez le définir sur l'original.

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
                                                                         style:UIBarButtonItemStylePlain
                                                                        target:self
                                                                        action:@selector(info:)];
49
Peter

Swift 3:

    let image : UIImage? = UIImage.init(named: "heart.png")!.withRenderingMode(.alwaysOriginal)
16
selmad

Pour Swift 2.1+, cela ressemblerait à ceci:

    let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

ou simplement 

    let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(.AlwaysOriginal)
6
jesses.co.tt

Vous pouvez aussi le faire à partir d’avoirs. Allez à Assets.xcassets >> Sélectionnez l'image utilisée comme image d'élément de bouton à barres. Appuyez sur l'inspecteur d'attributs dans le panneau de droite. Choisissez le rendu pour l'image originale. Ce sera par défaut plus tôt. Vous allez maintenant voir l'image colorée. 

5
Amrit Sidhu

Swift 4:

let image = UIImage(named: "imageName")?.withRenderingMode(.alwaysOriginal)
navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(leftBarButtonPressed))
2
choofie

Parce que la couleur de barButtonItems dans votre application est liée à la propriété tintColor dans la fenêtre de l'application.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.tintColor = [UIColor redColor];
    return YES;
}
2
carlodurso

Ok, compris ... je règle d'abord l'image à son état d'origine.

UIImage *image = [[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:self
                                                                            action:@selector(info:)];
2
Jan

Je sais qu'il est trop tard pour répondre à cette question, mais je vois qu'il existe un moyen très simple de résoudre ce problème au lieu de modifier le code. 

utilisation de Xcode Accédez à Assets --Select Image --- cochez Render as et sélectionnez Image originale au lieu de la propriété par défaut. 

 enter image description here

0
nivritgupta

Modifiez la couleur de la teinte de l’élément du bouton de barre du storyboard. Ou couleur de l'image dans le storyboard.

La couleur doit être la couleur attendue, hex ou rgb.

0
Sofeda