如何在ios应用程序中将自定义字体系列设置为系统字体

我正在一个iOS应用程序中,我必须使用用户界面的自定义字体。 我知道如何在应用程序中集成新的自定义字体。 对于我有

  1. 使用.ttf扩展名下载字体族文件。
  2. 将它们添加到资源包。
  3. 在info.plist文件中添加应用程序提供的键字体。

这个自定义字体显示效果。 但是我想要做的是,我想把它们设置为systemFont。 所以我不必在所有UI元素中设置它们。

我想要类似的东西

[[UIApplication sharedApplication] systemFont:@"Arial"]; 

这可能吗? 谁能帮我这个?

我在更新iOS 7的iOS应用程序时遇到了同样的问题。我想为整个应用程序设置一个自定义字体,即使对于不允许自定义字体的控件(例如拾取器)也是如此。
在networking和Twitter上进行了一些研究之后,我解决了使用方法Swizzling,这是一个交stream方法实现的实践。

注意:如果不小心使用,这种方法可能是危险的! 阅读关于SO: 方法Swizzling的危险的讨论

但是,这是做什么的:

  1. 创build一个UIFont类别,如UIFont + CustomSystemFont。
  2. 在.m文件中导入<objc/runtime.h>
  3. 将.h文件保持未修改状态并将此代码添加到.m:
 +(UIFont *)regularFontWithSize:(CGFloat)size { return [UIFont fontWithName:@"Your Font Name Here" size:size]; } +(UIFont *)boldFontWithSize:(CGFloat)size { return [UIFont fontWithName:@"Your Bold Font Name Here" size:size]; } 

//方法Swizzling

 +(void)load { SEL original = @selector(systemFontOfSize:); SEL modified = @selector(regularFontWithSize:); SEL originalBold = @selector(boldSystemFontOfSize:); SEL modifiedBold = @selector(boldFontWithSize:); Method originalMethod = class_getClassMethod(self, original); Method modifiedMethod = class_getClassMethod(self, modified); method_exchangeImplementations(originalMethod, modifiedMethod); Method originalBoldMethod = class_getClassMethod(self, originalBold); Method modifiedBoldMethod = class_getClassMethod(self, modifiedBold); method_exchangeImplementations(originalBoldMethod, modifiedBoldMethod); }