Lorsque j'ajoute une icône à un uibarbuttonitem code> via le constructeur d'interface, l'icône est affichée en blanc. Lorsque j'ajoute le même fichier d'icône programmatiquement à un autre
uitoolbar code>, l'icône est affichée en noir. Pourquoi?
4 Réponses :
Dans votre code, vous définissez un uibutton comme sous-vision d'un uibarbuttonitem. Uibarbuttonitem est déjà un bouton, vous ne devez donc pas ajouter un autre bouton en tant que sous-visVIEW.
Essayez ceci: p>
UIImage *image = [UIImage imageNamed:@"icon.png"]; rootViewController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithImage:image] autorelease];
uibarbuttonitem code> ne répond pas à
initwithimage: code> mais à
initwithImage: style d'image: UIBARBUTTONITEMSTYLEP Target: Auto Action: @Selector (Action) Code> Toutefois, l'image est toujours noir au lieu de blanc.
Je suis désolé, c'est ce que je voulais dire en effet. Étrange ... quelle est la couleur réelle du fichier image?
Tout ce que Jongsma a dit raison, vous devez utiliser l'initwithImage: Style: Message. P>
Le problème suivant n'est pas votre façon de créer le Je pense que si vous voulez l'article en blanc sur une barboutton bordée, vous devrez toucher l'image elle-même. P> uibarbuttonitem code>, mais l'endroit que vous attribuez. Vous le créez avec UIBARBUTTONITEMSTYLEPLAIN, qui devrait normalement rendre le contour de l'icône en blanc, mais le droitbarbuttonitem d'un uinavigentItem (tout comme la gauche) n'est pas autorisé l'uibarbuttonitemstyleplain. C'est implicitement converti en uibarbuttonitemstyleforard. Dans le style bordé, l'icône est rendue 'tel quel', ce qui est noir avec un léger gradient. P>
Mais pourquoi l'image est-elle affichée en blanc lorsque je l'ajoute via Interface Builder?
Vous l'ajoutez comme droite de droite via InterfaceBuilder? Qui semble noir quand je le teste.
L'image apparaît en blanc, si le uibarbuttonitemstyleplain code> est utilisé, il apparaît en noir avec un bouton autour de celui-ci, avec le
uibarbuttonitemstyleforarded code>
Réponse: Si vous le voulez blanc, colorez votre image blanche. em> p>
Détails: strong> p>
uibarbuttonitemits se comporter un peu différemment en fonction de la façon dont vous les utilisez. p>
Lorsque vous ajoutez à un uitoolbar code>: strong> p>
initwithImage: style: cible: action: code> crée des "icônes blanches" (la couleur d'image est ignorée, des pixels opaques sont utilisés comme masque pour créer une image blanche).
Ceci est vrai pour bordé code> et
de styles code> uniquement (mais sur uitoolbar uniquement). em> p>
initwithcustomview: code> affiche une image de couleur normale. p>
uinavigentitem code>: strong> p>
initwithImage: style: cible: action: code> crée des images colorées et convertit
uni code> sur
bordé p>. p>
Merci pour cette réponse. Je suis confus cependant; Le ios hig et le UIBARBUTTONITEM API DOCS State que l'image est utilisée comme masque pour dériver l'apparence du bouton à l'aide de ses valeurs alpha. seul. Le comportement réel est-il documenté par Apple?
(Pour clarifier: Je ne discute pas avec votre réponse, je peux voir de mes propres yeux, dans mon propre code, que tu es mort à droite et que je t'ai donné un +1 pour votre peine. Mais le comportement est totalement différent de ce que l'énoncé des documents d'Apple, alors je suis naturellement curieux de savoir si je viens de manquer quelque chose.)
J'ai également été assez confus et j'ai passé 30 minutes à comprendre cela. C'est pourquoi j'ai posté ma réponse parce que j'espérais que quelqu'un trouverait une utilisation. Le comportement n'est certainement pas évident et contre ce que disent les documents.
avait le même problème. J'ai noté que les images @ 2x étaient utilisées à la place ... p>