2012-04-21 18 views
24

En mi info.plist, añadí una tecla "Fuentes proporcionadas por la aplicación" y añadió EdwardianScriptITCStd.otf enter image description hereUIFont fontWithName devuelve nil

Pero, cuando trato de conseguir que el tipo de letra, devuelve nil:

NSLog(@"%@", [UIFont fontWithName:@"EdwardianScriptITCStd" 
           size:16.0f]); 

imprimí las familias de fuentes que utilizan [UIFont familyNames] y no es allí tampoco:

(
    Thonburi, 
    "Snell Roundhand", 
    "Academy Engraved LET", 
    "Marker Felt", 
    "Geeza Pro", 
    "Arial Rounded MT Bold", 
    "Trebuchet MS", 
    Arial, 
    Marion, 
    "Gurmukhi MN", 
    "Malayalam Sangam MN", 
    "Bradley Hand", 
    "Kannada Sangam MN", 
    "Bodoni 72 Oldstyle", 
    Cochin, 
    "Sinhala Sangam MN", 
    "Hiragino Kaku Gothic ProN", 
    Papyrus, 
    Verdana, 
    "Zapf Dingbats", 
    Courier, 
    "Hoefler Text", 
    "Euphemia UCAS", 
    Helvetica, 
    "Hiragino Mincho ProN", 
    "Bodoni Ornaments", 
    "Apple Color Emoji", 
    Optima, 
    "Gujarati Sangam MN", 
    "Devanagari Sangam MN", 
    "Times New Roman", 
    Kailasa, 
    "Telugu Sangam MN", 
    "Heiti SC", 
    "Apple SD Gothic Neo", 
    Futura, 
    "Bodoni 72", 
    Baskerville, 
    "Chalkboard SE", 
    "Heiti TC", 
    Copperplate, 
    "Party LET", 
    "American Typewriter", 
    "Bangla Sangam MN", 
    Noteworthy, 
    Zapfino, 
    "Tamil Sangam MN", 
    "DB LCD Temp", 
    "Arial Hebrew", 
    Chalkduster, 
    Georgia, 
    "Helvetica Neue", 
    "Gill Sans", 
    Palatino, 
    "Courier New", 
    "Oriya Sangam MN", 
    Didot, 
    "Bodoni 72 Smallcaps" 
) 

¿Qué me falta? Gracias!

+4

¿Ha verificado que la fuente está incluida en su objetivo de compilación (en la fase de compilación "Copiar recursos")? –

+1

Además, verificaría el valor bruto de la clave para "Fuentes proporcionadas por la aplicación" para asegurarme de que sea correcta. Al ver el * .plist en Xcode, haga clic derecho y seleccione "Mostrar claves sin procesar/valores", luego verifique que la clave sea 'UIAppFonts'. –

+0

Sí, el valor bruto es UIAppFonts y está incluido en mis recursos de paquete de copia – 0xSina

Respuesta

74

Los comentarios que estaban empezando a muy largo, así que he decidido presentar una respuesta en vez :)

  1. Fuentes personalizadas sólo se admiten en iOS 3.2 y superiores, así que asegúrese de que su Destino de despliegue de la estructura Ajuste no retrocede más allá de la versión 3.2.

  2. Compruebe que la fuente está incluido en su destino de generación (en la sección "Recursos Bundle Copy" fase)

  3. Compruebe el valor bruto de la clave para "Fuentes proporcionadas por la aplicación" para asegurarse de que es correcta . Al ver el * .plist en Xcode, haga clic con el botón derecho y elija "Mostrar claves sin procesar/valores", luego verifique que la clave sea UIAppFonts.

  4. Creo que iOS requiere el nombre PostScript para una fuente cuando usa fontWithName: size:, que puede encontrar/verificar abriendo la fuente en el Libro de fuentes de Apple y escribiendo command+I.

  5. En cierto momento, hubo un problema con el uso de fuentes personalizadas y UILabel. No estoy seguro si este problema todavía existe. La solución fue para la subclase UILabel y establecer la fuente allí.

Si aún así no funciona, this Stack Overflow thread on custom fonts tiene un poco de información, es posible que tenga un poco de suerte allí.

EDITAR
No hay garantía de que tengo el mismo archivo fuente como usted, pero en mi máquina el nombre PostScript es "EdwardianScriptITC"

+1

Gracias por la respuesta detallada. # 2 era el problema, aunque lo comprobé dos veces, de hecho no estaba en la fase de compilación de copias (una señal de que tengo que irme a la cama pronto). – 0xSina

+0

# 4 me volvió loco, ahora funciona como un encanto, gracias. – andreamazz

+7

+1 para información para # 4 – user523234

0

El nombre de la fuente que se utilizará parece ser el "nombre de familia "en el Libro de fuentes. Probé el nombre PostScript, pero no siempre funciona. El apellido, hasta donde sé, siempre ha funcionado hasta ahora.

Puede consultar esta información, como se menciona en la respuesta anterior, dentro del Libro de fuentes, seleccione la fuente y presione cmd + I.

Espero que esto ayude ...

0

tuve este problema aunque juró que tenía fuentes personalizadas que trabajan muy bien con anterioridad.

Resulta que solo necesitaba ejecutar "Limpiar" en mi proyecto en el proyecto XCode para poder restablecer las referencias.

1

tuve el mismo problema. puede establecer la fuente en una etiqueta desde el constructor de interfaz en el guión gráfico.a continuación, obtener dicha fuente en el modo de depuración de la etiqueta como:

let cfnt = txtUsernameField.font 

continuación, haga clic en el botón i en la ventana de depuración poco y el nombre de la fuente de la familia se amplian en la ventana de la consola. y puede usarlo así:

txtUsernameField.font = UIFont(name: "MyriadPro-CondIt", size: 14) 
4

Si el nombre de su fuente incluye el caracter '-', sustitúyalo por carácter de espacio. Por ejemplo, Arial-Bold.ttf se usa como [UIFont fontWithName: "Arial Bold" size: 10];

+0

¡Sí, funcionó para mí! ¡Tenía "-", borrándolos a todos en el nombre de la fuente que funcionó! ¡Gracias! – RomOne

Cuestiones relacionadas