本文介绍了如何在ios应用程序中将自定义字体系列设置为系统字体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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


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

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

我想要类似于

  [[UIApplication sharedApplication] systemFont:@Arial]; 

这可能吗?任何人都可以帮助我吗?

解决方案

为整个应用程序设置一个自定义的字体,即使是不允许自定义字体的控件(例如,选择器)。
在网络和Twitter上的一些研究之后,我解决了使用Method Swizzling是交换方法实现的一个实践。注意:如果不小心使用,这种方法可能是危险的!阅读关于这个讨论:然而,这是做什么的:


  1. 创建一个UIFont类别,如UIFont + CustomSystemFont。

  2. 在.m文件中导入< objc / runtime.h>
  3. 将.h文件保留为未修改状态,并将此代码添加到.m中:



// Method 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);
}

这篇关于如何在ios应用程序中将自定义字体系列设置为系统字体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 14:38