简体   繁体   中英

How can i increase font size of whole application?

I am working on the application that needs to change dynamic font size of all the controls.

在此输入图像描述

As you seen in the screenshot i have to change the font according to the percentage of font size.

For Example

For 100%

lbl.font=[UIFont systemFontOfSize:20.0f];
lbl1.font=[UIFont systemFontOfSize:30.f];

For 80%

lbl.font=[UIFont systemFontOfSize:16.0f];
lbl1.font=[UIFont systemFontOfSize:24.f];

For 50%

lbl.font=[UIFont systemFontOfSize:10.0f];
lbl1.font=[UIFont systemFontOfSize:15.f];

What's the Best way to do that?

You can use UIAppearance . Tutorial link

& Take a look at this too.

Here's a list of classes that support this feature, in one way or the other.

UIActivityIndicatorView
UIBarButtonItem
UIBarItem
UINavigationBar
UIPopoverController
UIProgressView
UISearchBar
UISegmentedControl
UISlider
UISwitch
UITabBar
UITabBarItem
UIToolbar
UIView
UIViewController

Examples

UIActivityIndicatorView:

[[UIActivityIndicatorView appearance] setColor:[UIColor orangeColor]];

UINavigationBar:

[[UINavigationBar appearance] setTintColor:[UIColor brownColor]];
[[UINavigationBar appearanceWhenContainedIn:[MyCustomView class], nil] setTintColor:[UIColor blackColor]];

UIBarButtonItem:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];
[[UIBarButtonItem appearanceWhenContainedIn:[MyCustomView class], nil] setTintColor:[UIColor magentaColor]];

UIProgressView:

[[UIProgressView appearance] setProgressTintColor:[UIColor yellowColor]];
[[UIProgressView appearance] setTrackTintColor:[UIColor greenColor]];

UISegmentedControl:

UIImage *segmentSelected = [[UIImage imageNamed:@"Segment_Selected.png"]
                        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)];
UIImage *segmentUnselected = [[UIImage imageNamed:@"Segment_Unselected.png"]
                          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)];

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
                                               forState:UIControlStateNormal
                                             barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected
                                               forState:UIControlStateSelected
                                             barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                        [UIColor magentaColor],UITextAttributeTextColor,
                                        [UIColor clearColor], UITextAttributeTextShadowColor,
                                        [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset,
                                        [UIFont fontWithName:@"Courier-Oblique" size:16.0], UITextAttributeFont, nil] forState:UIControlStateNormal];

[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"SegmentedControl_Divider.png"]
                                 forLeftSegmentState:UIControlStateNormal
                                   rightSegmentState:UIControlStateNormal
                                          barMetrics:UIBarMetricsDefault];

UISlider:

[[UISlider appearance] setMinimumTrackImage:[UIImage imageNamed:@"Slider_Background.png"]
                                       forState:UIControlStateNormal];
[[UISlider appearance] setMaximumTrackImage:[UIImage imageNamed:@"Slider_Background.png"]
                                       forState:UIControlStateNormal];
[[UISlider appearance] setThumbImage:[UIImage imageNamed:@"Slider_Thumb.png"]
                                forState:UIControlStateNormal];

UISwitch:

[[UISwitch appearance] setOnTintColor:[UIColor redColor]];

UITabBar:

[[UITabBar appearance] setTintColor:[UIColor brownColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];

UIToolBar:

[[UIToolbar appearance] setTintColor:[UIColor blueColor]];

UISearchBar:

[[UISearchBar appearance] setImage:[UIImage imageNamed:@"Search_Icon.png"]
                      forSearchBarIcon:UISearchBarIconSearch
                                 state:UIControlStateNormal];
[[UISearchBar appearance] setImage:[UIImage imageNamed:@"Search_Cross.png"]
                      forSearchBarIcon:UISearchBarIconClear
                                 state:UIControlStateNormal];
UIImage *searchBg = [UIImage imageNamed:@"Search_Background.png"];
searchBg = [searchBg stretchableImageWithLeftCapWidth:10 topCapHeight:10];
[[UISearchBar appearance] setBackgroundImage:searchBg];

EDIT:

It depends on you. Let's say you should store size of Percentage into NSUSerDefaults or other storage. Then by using above code you can calculate the size according to percentage you've stored. Got it?

Answer on my own question. i am not sure is best way to that.

Enum For the different Font size

  typedef enum {
    UIFontCategoryExtraSmall,
    UIFontCategorySmall,
    UIFontCategoryMedium,
    UIFontCategoryLarge,
    UIFontCategoryExtraLarge
} UIFontCategory;

#define FONT_SIZE_KEY @"fontsize"

Category Class of UIFont

@interface UIFont (CustomFonSize)

+(UIFont *)preferredFontSizeWithMaxFontSize:(CGFloat )fontSize;

@end



 @implementation UIFont (AvenirContentSize)

+ (UIFont *)preferredFontSizeWithMaxFontSize:(CGFloat )fontSize; {
    // choose the font size
    NSInteger currentFontSize=[[NSUserDefaults standardUserDefaults]integerForKey:FONT_SIZE_KEY];

    if (currentFontSize==UIFontCategoryExtraSmall) {
        fontSize = fontSize-8;

    } else if (currentFontSize==UIFontCategorySmall) {
        fontSize = fontSize-6;

    } else if (currentFontSize==UIFontCategoryMedium) {
        fontSize = fontSize-4;

    } else if (currentFontSize==UIFontCategoryLarge) {
        fontSize = fontSize-2;

    } else if (currentFontSize==UIFontCategoryExtraLarge) {
        fontSize = fontSize;

    }

    return [UIFont systemFontOfSize:fontSize];


}

Use of the Custom Font Class

lbl.font=[UIFont preferredFontSizeWithMaxFontSize:16.0f];
lbl1.font=[UIFont preferredFontSizeWithMaxFontSize:24.f];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM