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 sur 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.
J'obtiens également le même problème sur une cellule de tableau avec une police personnalisée.
Dois-je indiquer à la vue quelque part que la police personnalisée n'est pas aussi haute que les autres polices?
EDIT: Je viens de réaliser que la police que j'utilise est une police Windows TrueType. Je peux l'utiliser correctement dans TextEdit sur Mac, seulement un problème d'alignement dans mon application
Réponses:
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é ascendante était trop petite par rapport à la valeur des polices système. L'ascendeur est un espace blanc vertical au-dessus des caractères de la police. Pour réparer votre police, vous devrez télécharger les utilitaires de ligne de commande Apple Font Tool Suite . Ensuite, prenez votre police et procédez comme suit:
Cela créera
Bold.hhea.xml
. Ouvrez-le avec un éditeur de texte et augmentez la valeur de l'ascender
attribut. 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:Ensuite, utilisez simplement la police ttf résultante dans votre application.
OS X El Capitan
Le programme d'installation d'Apple Font Tool Suite ne fonctionne plus sur OSX El Capitan à cause de SIP car il tente d'installer les fichiers binaires dans un répertoire protégé. Vous devez extraire manuellement
ftxdumperfuser
. Copiez d'abord le pkg du dmg dans un répertoire local, puis décompressez leOS X Font Tools.pkg
avecNaviguez maintenant dans le dossier
fontTools.pkg
avecExtraire la charge utile avec
Maintenant, le
ftxdumperfuser
binaire est dans votre dossier actuel. Vous pouvez le déplacer pour/usr/local/bin/
pouvoir l'utiliser dans chaque dossier à l'intérieur de l'application de terminal avec les éléments suivants.la source
J'ai résolu le problème en ajustant le contenu supérieur (pas le titre!).
Par exemple: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);
Bonne chance!
la source
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.
la source
Je pense que c'est la meilleure réponse. pas de jeu avec ascender, numberOfHMetrics etc ... juste import-export par application Glyphs et travail effectué. Merci à cette réponse: https://stackoverflow.com/a/16798036/1207684
la source
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 faire cela dans IB a ses propres avantages.
la source
Tard à la fête, mais comme ce problème m'a frappé pour la Nième fois, j'ai pensé publier la solution la plus simple que j'ai trouvée: utiliser Python FontTools .
Installez Python 3 s'il n'est pas disponible sur votre système.
Installez FontTools
pip3 install fonttools
FontTools inclut un outil TTX qui permet la conversion vers et depuis XML.
Convertissez votre police en .ttx dans le même dossier
ttx myFontFile.otf
Apportez les modifications nécessaires à .ttx et supprimez le fichier .otf car il sera remplacé à l'étape suivante.
Reconvertissez le fichier en .otf
ttx myFontFile.ttx
Motivation: La solution de kolyuchi est incomplète, et même avec ce flux d'installation étendu , l'exécution a
ftxdumperfuser
entraîné une erreur sur 10.15.2 Catalina.la source