Sur ma barre de navigation, j'ai quelques barbuttonitems de droite qui ont des icônes personnalisées (les images d'icônes sont blanches, qui ont bien fonctionné avec la palette de couleurs de base d'iOS 6).
Sous iOS 7, le chargement des images en utilisant InitWithTitle (voir Code Snippet 1) remplace la couleur "blanc" dans l'icône avec la teinte globale appropriée (une couleur spécifique du bleu foncé dans ce cas)
Extrait de code 1:
UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:(UIBarButtonItemStyle) UIBarButtonSystemItemCancel target:(self) action:@selector(refreshList)];
refreshButton.image = [UIImage imageNamed:@"RefreshIcon.png"];
Cependant, je devais utiliser initwithcustomView pour surmonter un changement de comportement étrange qui faisait que les icônes se déplacent hors de vue. L'idée de base était de définir spécifiquement la taille des icônes. IniTWithCustomView a résolu le problème de dimensionnement, mais n'affiche pas les images du bouton avec la teinte globale, elles sont affichées dans la couleur de l'image (blanc). Code Snippet 2 montre comment je crée le bouton avec initwithcustomview.
Extrait de code 2:
CGRect frameCustomButton2 = CGRectMake(0.0, 0.0, 18.0, 18.0);
UIButton *customButton2 = [[UIButton alloc] initWithFrame:frameCustomButton2];
[customButton2 setBackgroundImage:iconRefreshButton forState:UIControlStateNormal];
UIBarButtonItem *barCustomButton2 =[[UIBarButtonItem alloc] initWithCustomView:customButton2 ];
barCustomButton2.image = iconRefreshButton;
[customButton2 addTarget:self action:@selector(refreshList) forControlEvents:UIControlEventTouchUpInside];
Tout ce code est bien sûr dans (void) ViewDidload. J'ai essayé des choses comme:
barCustomButton2.tintColor = [UIColor blackColor]; //doesn't work
ou [BarbuttonPearance SettrintColor: [UICOLOR BlackColor]]; // ne fonctionne pas
Et ils ne remplacent pas la couleur blanche de l'image. C'est presque comme si la création de la vue personnalisée avait lieu après que la vue examinait la couleur globale de la teinte?
Comment puis-je m'assurer que l'icône de bouton prend la teinte globale?
Merci!