setFont无法按预期工作

时间:2015-02-16 00:26:01

标签: ios objective-c

我的问题更多是一种好奇心

当用户更改iOS字体的大小时,我尝试让我的应用程序响应。

要做到这一点,我已将以下观察者放在viewWillAppear函数中:

[[NSNotificationCenter defaultCenter] addObserver : self selector : @selector(refreshTextFontSize:) name : UIContentSizeCategoryDidChangeNotification object : nil];

在我的ViewController中。

我的refreshTextFontSize函数是这样的:

- (void) refreshTextFontSize : (NSNotification*)notification
{
    [[self textView] setFont : [UIFont preferredFontForTextStyle:UIFontTextStyleBody]];
}

(我的视图是一个内部只有TextView的视图,其出口名称是textView)

这不起作用。

当应用程序运行并且我在iPhone设置上更改iOS字体大小时,我的应用程序中没有任何操作。

但是,如果我在refreshTextFontSize 内手动调用viewWillAppear函数,一切正常。初始化应用程序时,它会提供正确的字体大小,当我在打开应用程序时更改设置的字体大小时,它也会响应得非常好。

所以,我的问题是:为什么我必须在refreshTextFontSize内调用viewWillAppear函数,以便当我的应用已经打开时,我的应用会响应iOS字体大小的用户更改< / STRONG>?我无法理解为什么我必须添加最后一行代码才能使我的应用程序在打开时更改字体大小,因为refreshTextFontSize函数会自动调用。事实上,refreshTextFontSize每次更改iOS字体大小时都会被观察者调用。但是,如果我没有最后一行代码,它就无效。

不确定我是否清楚解释,但感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我可能不正确,但我认为这与iOS应用程序不在后台运行这一事实有关。确定您的应用程序在后台打开,但它不会运行任何代码。你可以要求一些权限,但是我不认为任何适用于更改字体的权限。您最好的选择是注册UIApplicationDidBecomeActiveNotification通知并更改字体。

希望这是有道理的。