122 votes

Alignement vertical des polices personnalisées UIButton

J'ai un UIButton qui utilise une police personnalisée, qui est défini lors de mon point de vue de charges:

- (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 est semblant flotter vers le haut de la ligne du centre. Si je commente cette ligne, la police par défaut apparaît centrée verticalement amende. Mais l'évolution de la police personnalisée rompt l'alignement vertical.

J'obtiens le même problème sur une Cellule du Tableau avec une police personnalisée.

Ai-je besoin de dire à la vue quelque part que la police personnalisée n'est pas aussi grand que les autres polices?

EDIT: je viens de réaliser que la police que j'utilise est un Windows de Police TrueType. Je peux l'utiliser fine dans TextEdit sur Mac, seulement un problème avec l'alignement de mon Application

Button text not vertically centered

325voto

kolyuchiy Points 2987

Un problème similaire a été discuté lors de la Coutume installé des polices s'affichent pas correctement dans UILabel. Il n'y a pas de solution donnée.

Voici la solution qui a fonctionné pour mon custom de police qui a eu le même problème dans UILabel, UIButton et ces. Le problème avec la police s'est avéré être le fait que son bloqueur de propriété était trop petit par rapport à la valeur de polices système. Bloqueur est un espace vertical au-dessus de polices de caractères. Pour fixer votre police, vous devrez télécharger Apple Police Suite d'outils utilitaires de ligne de commande. Puis, prenez votre police et effectuez les opérations suivantes:

~$ ftxdumperfuser -t hhea -A d Bold.ttf

Cela permettra de créer Bold.hhea.xml. L'ouvrir avec un éditeur de texte et d'augmenter la valeur de ascender d'attribut. Vous aurez à expérimenter un peu pour trouver la valeur exacte qui fonctionne le mieux pour vous. Dans mon cas, je l'ai changé à partir 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

Alors simplement l'utilisation de la police ttf dans votre application.

49voto

Jordi Corominas Points 447

J’ai résolu le problème en ajustant l’encart du haut de la page contenu (pas le titre !).

Par exemple : button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0) ;

Bonne chance !

7voto

Mats Points 3039

Pas sûr que si cela aidera comme il peut dépendre de votre police, mais il est possible que votre ligne de base est mal alignée.

6voto

dollar8 Points 67

Je pense que c’est la meilleure réponse. aucun jouer avec ascendeur, numberOfHMetrics etc.... export-import juste par application de glyphes et de travail. Grâce à cette réponse : http://stackoverflow.com/a/16798036/1207684

2voto

Srikar Appal Points 26892

Vous pouvez tester ceci dans Interface Builder. Voici un aperçu de comment le faire-

enter image description hereenter image description here

Comme vous pouvez le voir essayer de faire cela en IB a ses propres avantages.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X