UIButton custom font vertical alignment

Tengo un UIButton que utiliza una fuente personalizada, que se establece cuando se carga mi vista:

 - (void)viewDidLoad { [super viewDidLoad]; self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ]; } 

El problema que tengo es que la fuente parece flotar en la línea central. Si comento esta línea, la fuente pnetworkingeterminada aparece cinput verticalmente bien. Pero cambiar a la fuente personalizada rompe la alignment vertical.

Recibo el mismo problema en una celda de tabla con una fuente personalizada también.

¿Necesito decirle a la vista que la fuente personalizada no es tan alta como otras fonts?

EDIT: Acabo de darme count de que la fuente que estoy usando es una fuente Windows TrueType. Puedo usarla bien en TextEdit en Mac, solo un problema con la alignment en mi aplicación

Texto del botón no centrado verticalmente

Se discutió un problema similar en la fuente instalada personalizada que no se muestra correctamente en UILabel . No hubo una solución dada.

Aquí está la solución que funcionó para mi fuente personalizada que tenía el mismo problema en UILabel, UIButton y tal. El problema con la fuente resultó ser el hecho de que su propiedad ascendente era demasiado pequeña en comparación con el valor de las fonts del sistema. Ascender es un espacio en blanco vertical sobre los caracteres de la fuente. Para arreglar su fuente, deberá download las utilidades de la command-line de Apple Font Tool Suite . Luego tome su fuente y haga lo siguiente:

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

Esto creará Bold.hhea.xml . Ábralo con un editor de text e incremente el valor del atributo ascender . Tendrá que experimentar un poco para descubrir el valor exacto que mejor funciona para usted. En mi caso, lo cambié de 750 a 1200. Luego vuelva a ejecutar la utilidad con la siguiente línea de command para combinar sus cambios en el file ttf:

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

Luego solo usa la fuente ttf resultante en tu aplicación.

OS X El Capitan

El instalador de Apple Font Tool Suite ya no funciona en OSX El Capitan debido a SIP porque intenta instalar los files binarys en un directory protegido. Tienes que extraer manualmente ftxdumperfuser . Primero, copie el package desde el file dmg a un directory local luego descomprima el OS X Font Tools.pkg con

 ~$ xar -xf OS\ X\ Font\ Tools.pkg 

Ahora navegue hacia la carpeta fontTools.pkg con

 ~$ cd fontTools.pkg/ 

Extrae la carga con

 ~$ cat Payload | gunzip -dc | cpio -i 

Ahora el binary ftxdumperfuser está en su carpeta actual. Puede moverlo a /usr/local/bin/ para que pueda usarlo en todas las carpetas dentro de la aplicación de terminal con lo siguiente.

 ~$ mv ftxdumperfuser /usr/local/bin/ 

Solucioné el problema al ajustar el contenido superior (¡no el título!).

Por ejemplo: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);

¡Buena suerte!

No estoy seguro de si esto ayudará, ya que puede depender de su fuente, pero podría ser que su línea de base esté desalineada.

 self.searchButton.titleLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 

Creo que esta es la mejor respuesta. no jugar con ascender, numberOfHMetrics, etc … solo import-export por aplicación Glyphs y trabajo realizado. Gracias a esta respuesta: https://stackoverflow.com/a/16798036/1207684

Puedes probar esto en Interface Builder. Aquí hay una instantánea de cómo hacerlo:

introduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquí

Como puede ver, tratar de hacer esto en IB tiene sus propios beneficios.

Por lo tanto, no hay una respuesta real a esto, aparte de editar el file de fuente. Lo cual no sé cómo hacer y no tuve time, así que hice mis fotos más estrechas y ajusté la celda para que parezca que estaba alineada correctamente.

Un pequeño truco sucio, supongo, pero funciona y está bien.

Esta fue la única fuente que causó un problema, por lo que el problema debe ser con el file de fuente.

En realidad, no fui yo quien concluyó esto, fue otra publicación SO, pero no puedo encontrarla en ningún lado, si vuelvo a encontrarla, la includeé en los comentarios.