J'ai un UIButton
qui utilise une police personnalisée, qui est définie lorsque ma vue se charge:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
Le problème que j'ai, c'est que la police semble flotter vers le haut de la ligne centrale. Si je commente cette ligne, la police par défaut apparaît bien centrée verticalement. Mais le passage à la police personnalisée rompt l'alignement vertical.
Je reçois également le même problème sur une cellule de tableau avec une police personnalisée.
Dois-je dire à la vue quelque part que la police personnalisée n'est pas aussi grande que les autres polices?
EDIT: Je viens de réaliser que la police que j'utilise est une police Windows TrueType. Je peux bien l'utiliser dans TextEdit sur Mac, seulement un problème d'alignement dans mon application
Un problème similaire a été discuté à La police installée personnalisée ne s'affiche pas correctement dans UILabel . Aucune solution n'a été donnée.
Voici la solution qui a fonctionné pour ma police personnalisée qui avait le même problème dans UILabel, UIButton et autres. Le problème avec la police s'est avéré être le fait que sa propriété ascender était trop petite par rapport à la valeur des polices système. Ascender est un espace vertical au-dessus des caractères de la police. Pour corriger votre police, vous devrez télécharger Apple Font Tool Suite utilitaires de ligne de commande. Prenez ensuite votre police et procédez comme suit:
~$ ftxdumperfuser -t hhea -A d Bold.ttf
Cela va créer Bold.hhea.xml
. Ouvrez-le avec un éditeur de texte et augmentez la valeur de l'attribut ascender
. Vous devrez expérimenter un peu pour trouver la valeur exacte qui vous convient le mieux. Dans mon cas, je l'ai changé de 750 à 1200. Ensuite, exécutez à nouveau l'utilitaire avec la ligne de commande suivante pour fusionner vos modifications dans le fichier ttf:
~$ ftxdumperfuser -t hhea -A f Bold.ttf
Ensuite, utilisez simplement la police ttf résultante dans votre application.
OS X El Capitan
Le programme d'installation Apple Font Tool Suite ne fonctionne plus sous OSX El Capitan à cause de SIP car il essaie d'installer le fichiers binaires dans un répertoire protégé. Vous devez extraire manuellement ftxdumperfuser
. Copiez d'abord le paquet du dmg dans un répertoire local, puis décompressez le OS X Font Tools.pkg
avec
~$ xar -xf OS\ X\ Font\ Tools.pkg
Naviguez maintenant dans le dossier fontTools.pkg
avec
~$ cd fontTools.pkg/
Extraire la charge utile avec
~$ cat Payload | gunzip -dc | cpio -i
Le binaire ftxdumperfuser
est maintenant dans votre dossier actuel. Vous pouvez le déplacer vers /usr/local/bin/
afin que vous puissiez l'utiliser dans chaque dossier à l'intérieur de l'application de terminal avec ce qui suit.
~$ mv ftxdumperfuser /usr/local/bin/
J'ai résolu le problème en ajustant l'encart du contenu supérieur (pas le titre!).
Par exemple: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);
Bonne chance!
Je pense c'est la meilleure réponse. pas de jeu avec ascender, numberOfHMetrics etc ... juste import-export par Glyphs application et Job done. Merci à cette réponse: https://stackoverflow.com/a/16798036/1207684
Je ne sais pas si cela vous aidera car cela peut dépendre de votre police, mais il se peut que votre ligne de base soit mal alignée.
self.searchButton.titleLabel.baselineAdjustment =
UIBaselineAdjustmentAlignCenters;
Vous pouvez essayer cela dans Interface Builder. Voici un aperçu de la façon de le faire -
Comme vous pouvez le voir, essayer de le faire dans IB a ses propres avantages.
REMARQUE: il y a clairement une meilleure réponse que celle-ci (celle avec des centaines de votes positifs ci-dessus)
Je ne trouve pas de vraie réponse à cela, à part modifier le fichier de police. Ce que je ne sais pas faire et je n'ai pas eu le temps, alors j'ai juste rendu mes photos plus étroites et ajusté la cellule pour lui donner l'air d'être correctement alignée.
Un petit hack sale je suppose, mais ça marche et ça va.
C'était la seule police qui a causé un problème, donc le problème doit être avec le fichier de police.
Ce n'est pas vraiment moi qui ai conclu cela, c'était un autre SO post, mais je ne le trouve nulle part, si je le retrouve, je le collerai dans les commentaires.