Me gustaría que una aplicación incluya una fuente personalizada para representar texto, cargarla y luego usarla con UIKit
elementos estándar como UILabel
. es posible?
ios
cocoa-touch
fonts
Airsource Ltd
fuente
fuente
Respuestas:
iOS 3.2 y versiones posteriores lo admiten. Directamente desde el documento Novedades del iPhone OS 3.2 :
Una vez que las fuentes se han configurado en el
Info.plist
, puede usar sus fuentes personalizadas como cualquier otra fuente en IB o programáticamente.Hay un hilo continuo en los foros de desarrolladores de Apple:
https://devforums.apple.com/thread/37824 (se requiere inicio de sesión)
Y aquí hay un excelente y simple tutorial de 3 pasos sobre cómo lograr esto (enlace roto eliminado)
Info.plist
archivo llamadoUIAppFonts
.UIAppFonts
matrizInfo.plist
[UIFont fontWithName:@"CustomFontName" size:12]
para obtener la fuente personalizada para usar con sus UILabels y UITextViews , etc.Además: asegúrese de que las fuentes estén en los recursos del paquete de copias.
fuente
Editar: a partir de iOS 3.2, esta funcionalidad está integrada. Si necesita admitir versiones anteriores a 3.2, aún puede usar esta solución.
Creé un módulo simple que extiende
UILabel
y maneja la carga de archivos .ttf. Lo lancé de código abierto bajo la licencia de Apache y lo puse en github aquí.Los archivos importantes son
FontLabel.h
yFontLabel.m
.Utiliza parte del código de la respuesta de Genericrich .
Explore la fuente aquí.
O
Copie su archivo de fuente en recursos
Agregue una clave a su
Info.plist
archivo llamada UIAppFonts. ("Fuentes proporcionadas por la aplicación)Haga de esta clave una matriz
Para cada fuente que tenga, ingrese el nombre completo de su archivo de fuente (incluida la extensión) como elementos de la matriz UIAppFonts
Salvar
Info.plist
Ahora en su aplicación, simplemente puede llamar
[UIFont fontWithName:@"CustomFontName" size:15]
para obtener la fuente personalizada para usar con suUILabels
yUITextViews
, etc.Para más información
fuente
Hay una manera simple de usar fuentes personalizadas en iOS 4 .
Chalkduster.ttf
) a la carpeta Recursos del proyecto en XCode.info.plist
y agregue una nueva clave llamadaUIAppFonts
. El tipo de esta clave debe ser matriz.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
en tu aplicación.Desafortunadamente, IB no permite inicializar etiquetas con fuentes personalizadas. Vea esta pregunta para resolver este problema. Mi solución favorita es usar una
UILabel
subclase personalizada :fuente
En Info.plist, agregue la entrada "Fuentes proporcionadas por la aplicación" e incluya los nombres de las fuentes como cadenas:
Luego verifique que su fuente esté incluida ejecutando:
Tenga en cuenta que su nombre de archivo ttf podría no ser el mismo nombre que usa cuando configura la fuente para su etiqueta (puede usar el código anterior para obtener el parámetro "fontWithName"):
fuente
editar: esta respuesta no está vigente a partir de iOS3.2; usar UIAppFonts
La única forma en que he podido cargar exitosamente mensajes personalizados
UIFont
es a través del marco privado GraphicsServices.Lo siguiente cargará todas las
.ttf
fuentes en el paquete principal de la aplicación:Una vez que se cargan las fuentes, se pueden usar al igual que las fuentes proporcionadas por Apple:
GraphicsServices incluso se puede cargar en tiempo de ejecución en caso de que la API desaparezca en el futuro:
fuente
[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];
devuelve 0 ancho y alto para cualquier fuente personalizada que he probado.Con
iOS 8
+ yXcode 6
+ puedes hacer esto fácilmente. Aquí están los pasos:1) Arrastre y suelte su fuente a la
Xcode
carpeta Archivos de soporte. No olvide marcar su aplicación en la sección Agregar a objetivos . A partir de este momento, puede usar esta fuenteIB
y elegirla del palet de fuentes.2) Para que esta fuente esté disponible en su dispositivo, abra su clave
info.plist
y agregueFonts provided by application
. Contendrá la clave del Elemento 0, debe agregar su nombre de fuente como valor. El nombre de la fuente puede variar del nombre de su archivo de fuente. Pero primero, intente agregar su nombre de archivo en la mayoría de los casos este trabajo.Si no, este artículo siempre me ayudó.
Aquí hay un fragmento rápido del código de este artículo para ayudarlo a encontrar su nombre de fuente.
EDITAR
Quiero mencionar que debe agregar archivos de fuentes a las Fases de compilación de su destino , Copiar recursos de paquete . Sin él, no verá su fuente en el dispositivo. Y podría conducir a un comportamiento inesperado.
Por ejemplo, me encuentro con
bug
, cuandoUITextField
tengo una fuente personalizada, pero esta fuente no estaba en los recursos del paquete de copia . Y cuando sigoviewcontroller
con estotextfield
, hay un retraso de aproximadamente 4 segundos antes deviewDidLoad
que se llame a la función. Resolver problemas de fuente eliminó este retraso. Por lo tanto, recomiendo verificarlo dos veces. (rdar: // 20028250) Por cierto, no pude reproducir el error, pero estoy seguro de que el problema estaba en la fuente.fuente
He hecho esto así:
Cargue la fuente:
Ahora, en tu
drawRect:
, haz algo como esto:Básicamente, tienes que hacer algo de fuerza bruta recorriendo el texto y vagando con el número mágico para encontrar tu desplazamiento (aquí, mírame usando 29) en la fuente, pero funciona.
Además, debe asegurarse de que la fuente esté legalmente incrustada. La mayoría no lo son y hay abogados que se especializan en este tipo de cosas, así que ten cuidado.
fuente
CGContextShowTextAtPoint()
, aunque no funciona con UTF-8.Sí, puede incluir fuentes personalizadas. Consulte la documentación en UIFont, específicamente, el
fontWithName:size:
método.1) Asegúrese de incluir la fuente en su carpeta de recursos.
2) El "nombre" de la fuente no es necesariamente el nombre del archivo.
3) Asegúrese de tener el derecho legal de usar esa fuente. Al incluirlo en su aplicación, también lo está distribuyendo, y necesita tener el derecho de hacerlo.
fuente
Si está utilizando
xcode 4.3
, hay que añadir elfont
de laBuild Phase
virtudCopy Bundle Resources
, de acuerdo con https://stackoverflow.com/users/1292829/arne en el hilo, personalizado Fuentes Xcode 4.3 . Esto funcionó para mí, estos son los pasos que tomé para que las fuentes personalizadas funcionen en mi aplicación:OTF
(oTTF
) archivos a un nuevo grupo que creé y acepté la elección de xcodecopying the files over to the project folder
.UIAppFonts
matriz con sus fuentes enumeradas como elementos dentro de la matriz. Solo elnames
, no la extensión (por ejemplo, "GothamBold
", "GothamBold-Italic
").project name
camino en la parte superior delProject Navigator
lado izquierdo de la pantalla.Build Phases
pestaña que aparece en el área principal de xcode.Copy Bundle Resources
sección " " y haga clic en"+"
para agregar la fuente."+"
.add to the project
.fuente
Aquí están las instrucciones paso a paso de cómo hacerlo. No necesita biblioteca adicional ni ninguna codificación especial.
http://shang-liang.com/blog/custom-fonts-in-ios4/
La mayoría de las veces el problema es con la fuente, no con el método. La mejor manera de hacerlo es usar una fuente que seguramente funcionará, como verdana o geogia. Luego cambie a la fuente deseada. Si no funciona, tal vez el nombre de la fuente no sea correcto o la fuente no esté bien formateada.
fuente
Es muy fácil agregar una nueva fuente en su aplicación iOS existente.
Solo necesita agregar la fuente, por ejemplo font.ttf, a su Carpeta de recursos.
Abre tu aplicación
info.plist
. Agregue una nueva fila como "Fuentes proporcionadas por la aplicación" y escriba el nombre de la fuente como font.ttf.Y al configurar la fuente, haga lo
setFont:"corresponding Font Name"
Puede verificar si su fuente es agregada o no por
NSArray *check = [UIFont familyNames];
.Devuelve toda la fuente que admite su aplicación.
fuente
Recomendaría seguir uno de mis tutoriales cortos favoritos aquí: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ de donde proviene esta información.
Paso 1 - Arrastra tu .ttf o .otf desde Finder a tu proyecto
NOTA: asegúrese de hacer clic en la casilla 'Agregar a objetivos' en el objetivo principal de su aplicación
Si olvidó hacer clic para agregarlo a su destino, haga clic en el archivo de fuente en la jerarquía de su proyecto y en el panel lateral derecho, haga clic en el objetivo principal de la aplicación en la sección Membresía de destino
Para asegurarte de que tus fuentes sean parte del objetivo de tu aplicación, asegúrate de que aparezcan en tus Recursos de paquete de copias en Fases de compilación
Paso 2: agrega los nombres de archivo de fuente a tu Plist
Vaya a las Propiedades de destino de iOS personalizadas en su Sección de información y agregue una clave a los elementos en esa sección llamada
Fonts provided by application
(debería ver que aparece como una opción a medida que la escribe y se configurará como una matriz. Haga clic en la pequeña flecha para abrir los elementos de la matriz y escriba los nombres de los archivos .ttf o .otf que agregó para que su aplicación sepa que estos son los archivos de fuente que desea que estén disponiblesNOTA: si su aplicación falla inmediatamente después de este paso, verifique su ortografía en los elementos que agregue aquí
Paso 3: descubre los nombres de tus fuentes para poder llamarlas
Muy a menudo, el nombre de fuente visto por su aplicación es diferente de lo que cree que se basa en el nombre de archivo de esa fuente, ponga esto en su código y mire el registro que hace su aplicación para ver qué nombre de fuente llamar en su código
Rápido
C objetivo
Su registro debería verse así:
Paso 4: use su nueva fuente personalizada con el nombre del Paso 3
Rápido
C objetivo
fuente
Encuentra el TTF en el buscador y "Obtener información". Bajo el título "Nombre completo:" me dio un nombre con el que luego usé
fontWithName
(simplemente copié y pegué el nombre exacto, en este caso no era necesaria la extensión '.ttf').fuente
Todavía no está disponible, pero la próxima versión de cocos2d (marco de juego 2d) admitirá fuentes de mapa de bits de longitud variable como mapas de caracteres.
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
El autor no tiene una fecha de lanzamiento fijada para esta versión, pero vi una publicación que indicaba que sería en el próximo mes o dos.
fuente
Un aviso importante: debe usar el "nombre PostScript" asociado con la fuente, no su nombre completo o apellido. Este nombre a menudo puede ser diferente del nombre normal de la fuente.
fuente
sigue este paso
1) Copie su fuente en su proyecto
2) abra su
.plist
archivo en modo de código fuente ... (Nota: no abririnfo.plist
)3) Antes de eso: haga clic derecho en su fuente y ábrala en fontforge o editor similar y
install
en su sistema, debería serinstall
4) Escriba esto
5) Escriba este código en su
class .m
Aquí lblPoints cambiará a partir de su
UILabel
¡¡Hecho!! Si aún así su fuente no funciona, primero verifique la compatibilidad de sus fuentes
fuente
info.plist
?¿Quizás el autor olvidó darle a la fuente un nombre Mac FOND ?
También puede probar la opción "Apple" en el diálogo de exportación.
DESCARGO DE RESPONSABILIDAD : ¡No soy un desarrollador de iPhone!
fuente
He estado probando las diversas sugerencias en esta página en iOS 3.1.2 y estas son mis conclusiones:
Simplemente usando
[UIFont fontWithName:size:]
con las fuentes en el directorio de Recursos no funcionará, incluso si el nombre FOND se establece usando FontForge.[UIFont fontWithName:size:]
funcionará si las fuentes se cargan primero usando GSFontAddFromFile. PeroGSFontAddFromFile
no es parte de iOS 3.1.2, por lo que debe cargarse dinámicamente como lo describe @rpetrich.fuente
Buscar
ATSApplicationFontsPath
Una entrada simple que le permite incluir los archivos de fuente en la carpeta de recursos de su aplicación y que "simplemente funcionan" en su aplicación.
fuente
He combinado algunos de los consejos de esta página en algo que me funciona en iOS 5.
Primero, debe agregar la fuente personalizada a su proyecto. Luego, debe seguir los consejos de @iPhoneDev y agregar la fuente a su archivo info.plist.
Después de hacer eso, esto funciona:
Sin embargo, debe conocer el nombre PostScript de su fuente. Simplemente siga los consejos de @Daniel Wood y presione el comando-i mientras está en FontBook.
Luego, disfruta de tu fuente personalizada.
fuente
Primero agregue la fuente en formato .odt a sus recursos, en este caso usaremos DINEngschriftStd.otf, luego use este código para asignar la fuente a la etiqueta
Para asegurarse de que su fuente esté cargada en el proyecto simplemente llame
En el .plist debes declarar la fuente. Simplemente agregue un registro 'Fuentes proporcionadas por la aplicación' y agregue una cadena de elemento 0 con el nombre de la fuente (DINEngschriftStd.otf)
fuente
Para iOS 3.2 y superior: utilice los métodos proporcionados por varios anteriores, que son:
[UIFont fontWithName:@"Real Font Name" size:16]
en su aplicación.PERO El "Nombre de fuente real" no siempre es el que ve en Fontbook. La mejor manera es preguntarle a su dispositivo qué fuentes ve y cuáles son los nombres exactos.
Yo uso el uifont-name-grabber publicado en: uifont-name-grabber
Simplemente coloque las fuentes que desee en el proyecto xcode, agregue el nombre del archivo a su plist y ejecútelo en el dispositivo para el que está creando, le enviará una lista completa de fuentes con los nombres que
UIFont fontWithName:
espera.fuente
La mejor solución es agregar una nueva propiedad "
Fonts provided by application
" a suinfo.plist
archivo.Luego, puede usar su fuente personalizada como de costumbre
UIFont
.fuente
Hay una nueva forma de usar fuentes personalizadas, comenzando con iOS 4.1. Le permite cargar fuentes dinámicamente, ya sea desde archivos incluidos con la aplicación, datos descargados o lo que tenga. También le permite cargar fuentes a medida que las necesita, mientras que el método anterior las carga todas en el momento del inicio de la aplicación, lo que puede llevar demasiado tiempo si tiene muchas fuentes.
El nuevo método se describe en ios-dynamic-font-loading
Utiliza la
CTFontManagerRegisterGraphicsFont
función, dándole un búfer con sus datos de fuente. Luego está disponible paraUIFont
y vistas web, al igual que con el método anterior. Aquí está el código de muestra de ese enlace:fuente
kCTFontManagerErrorAlreadyRegistered
: "El archivo ya se ha registrado en el alcance especificado". developer.apple.com/library/ios/#documentation/Carbon/Reference/…Swift, forma de código: (funciona también con swift 2.0)
Agregue las fuentes requeridas a su proyecto (al igual que agregar imágenes, simplemente arrastre a Xcode), asegúrese de que estén dirigidas a su proyecto,
agregue este método y cargue fuentes personalizadas (recomendado en
appDelegate didFinishLaunchingWithOptions
)Use ejemplo:
Usa la fuente:
fuente
Puede agregar los archivos "FONT" necesarios dentro de la carpeta de recursos. Luego vaya al
Info.plist
archivo Proyecto y use la "CLAVE" Fuentes proporcionadas por la aplicación "y el valor como" NOMBRE DE FUENTE ".Entonces puedes llamar al método
[UIFont fontwithName:@"FONT NAME" size:12];
fuente
Hice todo lo posible pero las nuevas fuentes no aparecen, así que encontré la solución:
Cuando arrastre los archivos fot (otf o ttf) NO olvide marcar la casilla debajo de "Agregar a objetivos".
Después de hacer eso, su fuente aparecerá y todo funcionará bien.
fuente
Aunque algunas de las respuestas anteriores son correctas, he escrito un tutorial visual detallado para las personas que todavía tienen problemas con las fuentes.
Las soluciones anteriores que le indican que agregue la fuente al plist y use
Son los correctos. Por favor, utilice ahora cualquier otra forma hack. Si aún tiene problemas para encontrar nombres de fuentes y agregarlos, aquí está el tutorial:
Usar fuentes personalizadas en la aplicación ios
fuente
sí, puedes usar fuentes personalizadas en tu aplicación
paso a paso siguiendo allí:
Agregue sus archivos de fuente personalizados a su proyecto en archivos de soporte
Agregue una clave a su archivo Info.plist llamada UIAppFonts.
Haga de esta clave una matriz
Para cada fuente que tenga, ingrese el nombre completo de su archivo de fuente (incluida la extensión) como elementos de la matriz UIAppFonts
Guardar Info.plist Ahora en su aplicación, simplemente puede llamar a [UIFont fontWithName: @ "su tamaño de nombre de fuente personalizado": 20] para obtener la fuente personalizada para usar con sus UILabels después de aplicar esto si no está obteniendo la fuente correcta, luego haga doble clic en la fuente personalizada, y vea cuidadosamente el nombre de la fuente en la parte superior que viene y copie esta fuente, pegue, aquí [UIFont fontWithName: @ "aquí más allá de su tamaño de Nombre de fuente personalizado": 20]
espero que obtengas la respuesta correcta
fuente
sí, puedes usar fuentes personalizadas en tu aplicación
paso a paso siguiendo allí:
Info.plist
archivo llamada UIAppFonts.Info.plist
ahora en su aplicación, simplemente puede llamar[UIFont fontWithName:@"your Custom font Name" size:20]
para obtener la fuente personalizada para usar con suUILabels
después de aplicar esto si no está obteniendo la fuente correcta, haga doble clic en la fuente personalizada, y verá que el nombre de la fuente en la parte superior está llegando y copie esta fuente, pegue, aquí
[UIFont fontWithName:@" here past your Custom font Name" size:20]
espero que obtenga la respuesta correctafuente