Xcode 6 a une nouvelle fonctionnalité où les polices et les tailles de police dans UILabel
, UITextField
et UIButton
peuvent être réglés automatiquement en fonction de la classe de taille de la configuration actuelle de l' appareil, à droite dans le story - board. Par exemple, vous pouvez définir a UILabel
pour utiliser la taille de police 12 sur les configurations «toute largeur, hauteur compacte» (comme sur les iPhones en mode paysage) et la taille 18 sur les configurations «largeur régulière, hauteur régulière» (comme sur les iPad ). Plus d'informations sont disponibles ici:
developer.apple.com/size_class
Il s'agit d'une fonctionnalité intéressante en théorie, car elle pourrait rendre inutile la définition de différentes polices par programme sur les fonctionnalités de l'interface utilisateur en fonction de la configuration de l'appareil. À l'heure actuelle, j'ai un code conditionnel qui définit les polices en fonction du type d'appareil, mais cela signifie évidemment que je dois définir les polices par programme partout dans l'application. J'étais donc très enthousiasmé au départ par cette fonctionnalité, mais j'ai trouvé qu'elle présentait un grave problème d'utilisation réelle pour moi (peut-être un bogue). Notez que je construis avec le SDK 8 et que je fixe un objectif de déploiement minimum d' iOS 8 , donc cela n'a rien à voir avec la compatibilité avec les anciennes versions d'iOS.
Le problème est le suivant: si je définis des tailles de police différentes pour différentes classes de taille et que j'utilise la police "Système" fournie par iOS , tout fonctionne comme prévu et les tailles de police changent en fonction de la classe de taille. Si j'utilise une police personnalisée fournie par mon application (oui, je l'ai configurée correctement dans mon ensemble d'applications, car elle fonctionne par programme) et que je définis la police personnalisée sur une étiquette dans un storyboard XCode 6 , cela fonctionne également comme prévu. Mais lorsque j'essaie d'utiliser différentes tailles de police personnalisée pour différentes classes de taille, dans le storyboard, cela ne fonctionne soudainement pas. La seule différence de configuration est la police que j'ai choisie (une police personnalisée par rapport à la police système). Au lieu de cela, toutes les polices apparaissent sur lepériphérique et simulateur comme police système par défaut à la taille par défaut , quelle que soit la classe de taille (et j'ai vérifié via le débogueur qu'il remplace la police système par celle spécifiée dans le storyboard). Donc, fondamentalement, la fonctionnalité de classe de taille semble être interrompue pour les polices personnalisées. De plus, il est intéressant de noter que les polices personnalisées s'affichent et ajustent correctement la taille dans le volet "Aperçu" XCode 6 pour le contrôleur de vue: cela ne fonctionne que lorsqu'il est exécuté sur le système iOS réel (ce qui me fait penser que je le configure correctement) .
J'ai essayé plusieurs polices personnalisées différentes, et cela ne semble fonctionner pour aucune d'entre elles, mais cela fonctionne toujours si j'utilise "Système" à la place.
Quoi qu'il en soit, quelqu'un d'autre a-t-il vu ce problème dans Xcode 6 ?
Des idées pour savoir s'il s'agit d'un bogue dans iOS 8, Xcode ou quelque chose du genre
Est-ce que je fais mal?
La seule solution de contournement que j'ai trouvée, comme je l'ai dit, est de continuer à définir les polices par programmation comme je l'ai été pour environ trois versions d'iOS, car cela fonctionne.
Mais j'aimerais pouvoir utiliser cette fonctionnalité si je pouvais la faire fonctionner avec des polices personnalisées. L'utilisation de la police System n'est pas acceptable pour notre conception.
INFORMATIONS SUPPLÉMENTAIRES: Depuis Xcode 8.0, le bogue est corrigé.