Janum Trivedi Janum Trivedi - 2 months ago 11
iOS Question

How to set a custom font for entire iOS app without specifying size

I'm trying to apply a custom font throughout my

iOS app
. I found that I could use:

[[UILabel appearance] setFont:[UIFont fontWithName:@"Proxima Nova" size:17.0]];



  • To set the default font and size for all
    UILabels
    . However, not all my
    UILabels
    share the same font size.

  • In Set a default font for whole iOS app?, someone had the same concern, and was told to set the size parameter to 0.0 to only set the font and not font size.

  • When I tried doing this, all the
    UILabel
    text in my app disappeared (because evidently
    iOS
    took the 0.0 font size literally).



Any suggestions as to how I can universally set a font but not size? Thanks a lot!

Answer
- (void)viewDidLoad
{
    [super viewDidLoad];
    [self setFontFamily:@"FagoOfficeSans-Regular" forView:self.view andSubViews:YES];
}

-(void)setFontFamily:(NSString*)fontFamily forView:(UIView*)view andSubViews:(BOOL)isSubViews
{
    if ([view isKindOfClass:[UILabel class]])
    {
        UILabel *lbl = (UILabel *)view;
        [lbl setFont:[UIFont fontWithName:fontFamily size:[[lbl font] pointSize]]];
    }

    if (isSubViews)
    {
        for (UIView *sview in view.subviews)
        {
            [self setFontFamily:fontFamily forView:sview andSubViews:YES];
        }
    }    
}
Comments