2017-09-26 3 views
6

Jusqu'à iOS 10, la police de caractères désactivée et activée de uibarbuttonitem reste la même, seule la couleur diffère. Mais, après avoir installé mon application sur un périphérique ayant ios 11, la police pour le mode désactivé est mise à jour (affichant la police du système), alors qu'en mode activé, elle affiche la police appropriée que j'ai définie. Donc, pour le cas d'iOS 11, comment puis-je définir la police pour le mode désactivé pour garder la cohérence dans l'application.Mise à jour de la police UIBarbuttonItem lorsqu'elle est désactivée - iOS 11

Répondre

7

Cela semble avoir changé dans iOS 11, au moins dans mon cas où j'utilise le protocole UIAppearance. Je ne sais pas si c'est un bug ou intentionnel.

J'ai aussi trouvé que je ne pouvais pas masquer les valeurs ensemble (comme .normal|.disabled) que cela signifiait qu'elle n'appliquer la police si le contrôle satisfait tous états.

donc j'ai fini par faire ceci:

for controlState in [UIControlState.normal, UIControlState.disabled, UIControlState.focused, UIControlState.highlighted, UIControlState.selected] { 
    barButton.setTitleTextAttributes([NSFontAttributeName: customFontName], for: controlState) 
} 

Pour la mise à jour à l'aide de partout le protocole UIAppearance:

for controlState in [UIControlState.normal, UIControlState.disabled, UIControlState.focused, UIControlState.highlighted, UIControlState.selected] { 
    UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: customFontName, for: controlState); 
}