Je crée un bouton de barre de navigation à l'aide de xib, mais lorsque je vais définir l'image sur le bouton de barre, la couleur de l'image est différente de l'image d'origine.
Voici mon image d'origine.
Et après avoir ajouté cette image sur l'élément du bouton de la barre de navigation, cela ressemble à ceci
Tout d'abord, je suis d'accord avec le commentaire de @ Desdenova.
Les deux images ne se ressemblent pas, l'une a des bords durs à angle droit pour chaque ligne et l'autre arrondie.
Assurez-vous que vous utilisez le bon fichier image.
Si tel est le cas, génial, problème résolu sans s'écarter de votre implémentation de xib
. Sinon, faites-le simplement par programme (selon le code @shankars).
Mais une autre chose à noter, j'ai rencontré des problèmes pour définir des fichiers d'image personnalisés sur des boutons, où l'image est modifiée ... assurez-vous d'utiliser UIImageRenderingModeAlwaysOriginal
lorsque vous définissez l'image sur le bouton :
Objectif-C:
[button setImage:[[UIImage imageNamed:@"imageName.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
Swift:
someBarButtonItem.image = UIImage(named: "yourPictureName")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
Swift 3:
someBarButtonItem.image = UIImage(named:"myImage")?.withRenderingMode(.alwaysOriginal)
Ceci est un exemple de code de travail
UIImage *myImage = [UIImage imageNamed:@"myImageFile.png"];
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:myImage style:UIBarButtonItemStylePlain target:self action:@selector(menuObject:)];
self.navigationItem.leftBarButtonItem = menuButton;
Parce que le storyboard ios7 a un problème que j'ai rencontré pour résoudre comme ci-dessous. définir votre couleur de teinte comme couleur d'image cela fonctionne
Vous pouvez créer un bouton de barre de navigation par programme au lieu d'un storyboard direct, cela n'affectera pas la couleur de l'image d'origine
self.navigationItem.leftBarButtonItem=[self backButton];
- (UIBarButtonItem *)backButton
{
UIImage *image = [UIImage imageNamed:@"image.png"];
CGRect buttonFrame = CGRectMake(0, 0, image.size.width, image.size.height);
UIButton *button = [[UIButton alloc] initWithFrame:buttonFrame];
//[button addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[button setImage:image forState:UIControlStateNormal];
UIBarButtonItem *item= [[UIBarButtonItem alloc] initWithCustomView:button];
return item;
}
Vous devez également définir la couleur de la teinte - ce qui a fonctionné pour moi - Vous pouvez générer UIBarButtonItem via le code comme suit:
#define setTurqoiseColor [UIColor colorWithRed:68.0f/255.0f green:181.0f/255.0f blue:223.0f/255.0f alpha:1.0]
UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:buttonImage style:UIBarButtonItemStyleBordered target:self action:@selector(toggleMenu)];
menuButton.tintColor = setTurqoiseColor;