Diseño de tags / vistas de text con fonts personalizadas en Interface Builder

Actualmente estoy trabajando en un proyecto de iPhone en el que todas las tags / vistas de text, etc. deben aparecer con una fuente personalizada (estoy usando Xcode 4.2.1). He investigado sobre esto y la única solución parece ser agregar los files de fuente al proyecto, editar el file info.plist de manera apropiada y configurar la fuente mediante progtwigción (es decir, mediante puntos de venta o subclassando las vistas relevantes). En cualquier caso, estos enfoques no llevarán a que el creador de la interfaz muestre el text con la fuente personalizada (todavía mostrará Helvetica). No es posible seleccionar la fuente personalizada con el inspector de attributes.

Aunque no creo que haya extrañado algo, solo quiero asegurarme de que no haya otra forma que progtwigr las fonts, lo que sería bastante doloroso para la tarea en la que tengo que trabajar (problemas de localización, layout de aplicaciones único, etc. ) Sería bueno que el generador de interfaces muestre fonts personalizadas.

Las fonts personalizadas solo se pueden configurar mediante progtwigción … Desafortunadamente … esto se denomina un error en el generador de interfaces y aún no se ha resuelto.

usando fonts personalizadas en Interface Builder, una biblioteca reutilizable está disponible.

Utiliza un truco simple para hacer esto. Establezca la fuente (diga calibri) en todos los elementos de la interfaz de usuario que nunca utilizará en su proyecto y FontReplacer hará la asignación entre la fuente personalizada y la calibración. Por lo tanto, no hay necesidad de crear IBOutlets o cualquier otro gráfico.

Aquí hay un enlace a github desde donde puede download FontReplacer para usar en su proyecto. https://github.com/0xced/FontReplacer

otra pregunta está abordando las mismas fonts que no se muestran en Interface Builder, también he publicado la posible solución allí

A partir de XCode 6 ahora ve la fuente que necesitaba importar (Lato).

No lo he probado mucho, pero funciona para tags de text sin formatting y no para tags atribuidas. Atribuidos se muestran bien en el Generador de interfaces, pero de forma pnetworkingeterminada en la fuente del sistema en time de ejecución.

¡Sería mucho mejor tenerlo allí visualmente o combinar tags de text para lograr un text "atribuido"!

Es realmente inconveniente Mientras esperas esta function, creo que esto te ayudará a organizar tu código con respecto a la fuente en el proyecto de iOS.

En la class compartida que usa para definir algunas variables globales como Common.h, define las fonts que puede usar

 #define FONT_LATO_REGULAR(s) [UIFont fontWithName:@"Lato-Regular" size:s] #define FONT_LATO_LIGHT(s) [UIFont fontWithName:@"Lato-Light" size:s] #define FONT_LATO_BOLD(s) [UIFont fontWithName:@"Lato-Bold" size:s] 

Luego, importa el Common.h (su class compartida) en la class que está implementando, configure la fuente para la label mediante:

 _lblTitle.font = FONT_LATO_BOLD(14.0); 

Finalmente, puede poner todas las configuraciones de fuente en un método para modificaciones adicionales.

 - (void) setFontForLabels { _lblTitle.font = FONT_LATO_BOLD(14.0); _lblTime.font = FONT_LATO_REGULAR(13.0); _lblLocation.font = FONT_LATO_REGULAR(13.0); } 

Puede que te ayude un poco. Asegúrese de importar sus fonts en el file splist ya.

Aplicable para iOS 5.0 y superior.

Cree una class personalizada UI-Element ( UIButton , UIButton , UILabel , etc.) y simplemente cambie el nombre de la class por el elemento particular en el guión gráfico para el que desea reflejar el cambio.

A continuación se muestra el código para el button personalizado. Puede hacer lo mismo para cualquier otro elemento que desee.

 CustomButtton.h @interface CustomButtton : UIButton @end CustomButtton.m @implementation CustomButtton - (void)awakeFromNib { // Initialization code if ([self isFontBold:self]) { self.titleLabel.font = [UIFont fontWithName:@"LaoUI-Bold" size:self.titleLabel.font.pointSize]; } else { self.titleLabel.font = [UIFont fontWithName:@"LaoUI" size:self.titleLabel.font.pointSize]; } NSLog(@"Fonts:%@",[UIFont familyNames]); } -(BOOL)isFontBold:(UIButton *)sender { UIFont *font = self.titleLabel.font; UIFontDescriptor *fontDescriptor = font.fontDescriptor; UIFontDescriptorSymbolicTraits fontDescriptorSymbolicTraits = fontDescriptor.symbolicTraits; return (fontDescriptorSymbolicTraits & UIFontDescriptorTraitBold); } @end 

Ahora simplemente configure el tamaño y el tipo de letra (Negrita o Normal). Actualiza automáticamente el elemento con fuente personalizada.

Por: [UIFont familyNames]: puede verificar si la aplicación incluye la familia de fonts personalizada o no, que haya definido en el file .plist.

En segundo lugar: debe agregar una key en el file .plist de su proyecto como se muestra en la siguiente captura de pantalla:

Cambio de .plist para soporte personalizado de fuentes en la aplicación

No he intentado esto con las versiones anteriores, pero con XCode 6, si tiene la fuente instalada correctamente en su proyecto e instala las fonts en su Mac, usando Font Book por ejemplo, XCode muestra las fonts en el selector de fuente, le permite configurar varias fonts y tamaños personalizados en una sola label, y parece que realmente utiliza las fonts correctas en time de ejecución.

No son todas rosas. Los controles de attributes de Interface Builder siguen siendo un desastre. Con frecuencia pierde el seguimiento de las properties asignadas, especialmente si intenta atribuir más de un solo párrafo a la vez. Los colors de las fonts no se pegan muy bien. Las selects superpuestas simplemente lo confunden increíblemente, por ejemplo, si su label tiene dos párrafos, con dos fonts diferentes y selecciona ambas y cambia el tamaño de la fuente, puede establecer los attributes de uno o ambos párrafos en un sistema pnetworkingeterminado.

Puede establecer una fuente personalizada en el guión gráfico o xib con attibutes inspector , refiérase a la fuente personalizada en un guión gráfico?

Puede usar un truco simple para usar fonts personalizadas en el creador de interfaces. Aquí hay un tutorial descriptivo que podría ayudarte en este sentido. Haz clic aquí para ver el tutorial