Estamos utilizando fuentes personalizadas en nuestro proyecto. Funciona bien en Xcode 5. En Xcode 6, funciona en texto plano, cadena atribuida en código. Pero todas las cadenas atribuidas establecidas en el guión gráfico vuelven a Helvetica cuando se ejecutan en un simulador o dispositivo, aunque se ven bien en el guión gráfico.
No estoy seguro de si es un error de Xcode 6 o iOS 8 SDK, o la forma de usar fuentes personalizadas ha cambiado en Xcode 6 / iOS 8.
Respuestas:
La solución para mí fue usar una
IBDesignable
clase:Dándote esto en el Interface Builder:
Puede configurar su cadena de atributos como lo hace normalmente, pero tendrá que configurar su tamaño de fuente y su familia de fuentes una vez más en las nuevas propiedades disponibles.
Como el Interface Builder está trabajando con la fuente personalizada de forma predeterminada, esto da como resultado que lo que ves es lo que obtienes , lo que prefiero al crear aplicaciones.
Nota
La razón por la que estoy usando esto en lugar de solo la versión simple es que estoy configurando propiedades en la etiqueta atribuida como el espacio entre líneas, que no están disponibles cuando se usa el estilo simple.
fuente
@IBInspectable
atributos temporalmente, en lugar de fuente y tamaño. Tenemos unamarkdownText
propiedad, porque la mayoría de las veces usamos cadenas atribuidas para texto en negrita o subrayado. Luego, analice el texto de la rebaja en una cadena atribuida con la información de fuente y tamaño configurada para texto sin formato.La respuesta más simple que funcionó es arrastrar las fuentes a FontBook. Si las fuentes están en su proyecto pero no en el FontBook de su computadora, IB a veces tiene problemas para encontrarlas. Extraño, pero me ha funcionado en varias ocasiones.
fuente
Puede agregar fuentes personalizadas al libro de fuentes.
Paso 1 : haga clic en administrar fuentes. Abre el libro de fuentes.
Paso 2 : haga clic en más y agregue sus fuentes.
La próxima vez que haga clic en la fuente con texto atribuido, la fuente recién agregada también se mostrará en la lista. Pero asegúrese de que su fuente personalizada se agregue en info.plist y agrupe los recursos.
fuente
Gracias a este hilo, he llegado a esta solución:
fuente
Mi solución es un poco complicada. La verdadera solución es que Apple arregle Interface Builder.
Con él, puede marcar todo el texto en negrita y cursiva en el generador de interfaces usando una fuente del sistema, luego, en tiempo de ejecución, renderizar su fuente personalizada. Puede que no sea óptimo en todos los casos.
Inspirado por esta publicación
fuente
He tenido problemas con este error: UILabel se muestra correctamente en IB con una fuente personalizada pero no se muestra correctamente en el dispositivo o simulador (la fuente está incluida en el proyecto y se usa en UILabels simples).
Finalmente encontré Attributed String Creator en (Mac) App Store. Genera código para colocarlo en su aplicación en el lugar apropiado. Fantástico. No soy el creador, solo un usuario feliz.
fuente
Resolvió el mismo problema: la fuente de atributo establecida para TextView en el guión gráfico no funcionó en tiempo de ejecución con XCode 6.1 y iOS 8 SDK.
Así es como resolví este problema, podría ser una solución para usted:
abra el inspector de atributos de su vista de texto, cambie el texto a "Sin formato"
haga clic en la cruz para eliminar el "wC hR" (rojo a continuación)
cambie el texto a "Atribuido", y luego podrá establecer la fuente y el tamaño de su texto.
fuente
wC hR
propiedad establecida, niUILabel
tampocoUITextView
.Encontré el mismo problema: la fuente de atributo para UILabel en el guión gráfico no funcionó en tiempo de ejecución. El uso de este UIFont + IBCustomFonts.m funciona para mí https://github.com/deni2s/IBCustomFonts
fuente
Prueba esto, funcionará
En mi caso, cuando intento establecer "Tecnología Silversky" como texto atribuido para la etiqueta del generador de interfaz, no se muestra cuando ejecuto el simulador, pero se muestra en el generador de interfaz. Así que utilicé un truco: hice la fuente Silversky con 1 píxel más grande que el texto de Tecnología.
El texto de atributo tiene un problema con el mismo tamaño de fuente, así que cambie el tamaño de 1 palabra, esto funciona conmigo.
Puede ser que este sea un error de xcode, pero este truco funciona para mí.
fuente
El mismo problema.
Resuelto: simplemente marque Seleccionable en TextView. Sin esto, tengo la fuente estándar del sistema.
fuente
Haga doble clic e instale la fuente en el sistema. Funcionará (Xcode 8.2)
fuente
La solución @Hamidptb funciona, asegúrese de obtener el nombre correcto de la fuente (una vez que la haya agregado al Libro de fuentes)
Abra la aplicación Libro de fuentes, navegue hasta su fuente y luego presione Comando + I. El nombre de PostScript es el nombre de la fuente que desea utilizar aquí:
UILabel.appearance (). Font = UIFont (nombre: " PostScriptName ", tamaño: 17)
fuente
Estaba tratando de obtener celdas tableView con texto que tiene varios párrafos. Las cadenas atribuidas parecían ser una forma de obtener espacio adicional entre los párrafos (algo un poco más atractivo que hacer dos avances de línea en la cadena). Encontré esta y otras publicaciones cuando descubrí que la configuración de IB no se aplicaba en el tiempo de ejecución cuando deseaba poner texto diferente en la celda.
Lo principal que se me ocurrió fue agregar una extensión a String (usando Swift) para crear una cadena atribuida con ciertas características. El ejemplo aquí usa la fuente Marker Felt, ya que se distingue fácilmente de Helvetica. El ejemplo también muestra un poco más de espacio entre párrafos para hacerlos más distintos entre sí.
Luego, en mi tableViewCell personalizado, le envía el texto que desea y lo convierte en una cadena atribuida en UILabel.
En el controlador de vista con tableView, debe registrar su celda en viewDidLoad (); utilicé una plumilla, así que algo como:
Para que la celda determine qué tan alta debe ser, cree una celda prototipo que se use para obtener información sobre el tamaño y que nunca se agregue a tableView. Entonces, en las variables de su controlador de vista:
Luego, en (probablemente anular, dependiendo de su controlador de vista) heightForRowAtIndexPath:
En el código anterior, prototypeCell se completará la primera vez que se necesite. El prototypeCell se usa para calcular la altura de la celda después de pasar por el proceso de tamaño automático. Deberá redondear la altura con la función ceil (). También agregué un factor extra de dulce de azúcar.
El bit de código final es cómo configura el texto para la celda. Para este ejemplo, simplemente:
Además, aquí hay una foto de la punta. Fijó la etiqueta a los bordes de la celda (con el margen deseado), pero usó una restricción "Mayor o igual que", con una prioridad menor que "Requerida" para la restricción inferior.
Establezca la fuente de la etiqueta en Atribuida. La fuente IB real no importaba.
El resultado en este caso:
fuente
En el caso de una cadena atribuida, puede agregar una fuente personalizada en la lista de fuentes como: haga clic en el icono de fuente, esto mostrará el siguiente cuadro de diálogo. En el siguiente cuadro de diálogo, puede agregar su propia categoría o una existente para la fuente personalizada. diálogo de fuente atribuida
Después de hacer clic en Administrar fuentes, se abre el siguiente cuadro de diálogo para seleccionar la categoría en la que creó o en la existente. Haga clic en el signo + para agregar una fuente en la categoría. Administrar cuadro de diálogo de fuente
fuente
eso tiene una solución simple y rápida y eso funciona en mi caso. esa solución es agregar una línea de código en didFinishLaunchingWithOptions func en el archivo AppDelegate.swift:
para textViews :
para etiquetas :
y para el resto de UiView como este dos ☝️
fuente
Para cualquiera que aplique fuentes personalizadas a una cadena atribuida en el código: intente configurarlo
viewDidLayoutSubviews
. Mi error fue hacerloviewDidLoad
, no se aplicará allí.fuente