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:)];
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:)];
Swift 3:
let image : UIImage? = UIImage.init(named: "heart.png")!.withRenderingMode(.alwaysOriginal)
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)
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.
Swift 4:
let image = UIImage(named: "imageName")?.withRenderingMode(.alwaysOriginal)
navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(leftBarButtonPressed))
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;
}
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:)];
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.
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.