mskw mskw - 1 year ago 218
iOS Question

How to detect Dynamic Font size changes from iOS Settings?

Inside settings->general->text size, after changing the text size, I'd have to exit my own app to have the sizes applied to

[UIFont preferredFontForTextStyle:..]

Is there a delegate or notification to notify my app to re-apply the new sizes?

Update: I tried the following but interestingly, the font size will apply after I BG and launch the app TWICE.

- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fromBg:) name:UIApplicationDidBecomeActiveNotification object:nil];


-(void) fromBg:(NSNotification *)noti{

self.headline1.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
self.subHeadline.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
self.body.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
self.footnote.font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote];
self.caption1.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1];
self.caption2.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption2];
// [self.view layoutIfNeeded];


Answer Source

You listen for the UIContentSizeCategoryDidChangeNotification.

Swift 3.0: NSNotification.Name.UIContentSizeCategoryDidChange

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download