Cambiar fuente del sistema para testings.

Actualmente estoy trabajando en un proyecto de iOS que tiene toneladas de tags / botones / controles repartidos en docenas de escenas. La mayoría de esos controles se crearon usando Interface Builder.

Por lo tanto, ahora mi trabajo es asegurarme de que cada control (especialmente las tags) esté formateado con la familia de fonts correcta, lo cual no es el caso en este momento porque muchos desarrolladores simplemente se olvidan de cambiar la fuente (nuestra fuente debe establecerse programáticamente desde no está incluido en IB) después de agregar el control en IB.

¿Hay alguna forma de cambiar la fuente del sistema temporalmente para que sea más fácil ver dónde se han olvidado las configuraciones de fuente?

He buscado:

  • Cambiar la fuente del sistema mediante progtwigción
  • Cambiar la fuente en Xcode en algún lugar
  • Cambiar la fuente en el simulador de iOS (tal vez como una opción de debugging)

Pero hasta ahora no he tenido éxito. No puedo ser el único con este tipo de problema, es naturalmente tedioso establecer cada fuente de control mediante progtwigción.

Lo único que podría imaginar es como anular el método de dibujo de la base UILabel con una fuente personalizada (wingdings anyone?), Pero eso parece un poco excesivo?

Puede intentar crear una categoría, que anula el sistemaFontOfSize: método de UIFont o utilizar el método swizzling (puede encontrar más información sobre el método swizzling aquí: http://cocoadev.com/MethodSwizzling ). Ambos son extremadamente feos y no deben usarse en producción , pero deben estar bien para propósitos de testing.

Aquí hay una categoría de ejemplo de UIFont:

@interface UIFont (SysFont) @end @implementation UIFont (SysFont) + (UIFont *)systemFontOfSize:(CGFloat)fontSize { return [UIFont fontWithName:@"YourFont" size:fontSize]; } @end