本文介绍了如何在ios应用程序中将自定义字体系列设置为系统字体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用一个ios应用程序,在这个应用程序中我必须使用用户界面的自定义字体。
我知道如何在应用程序中集成新的自定义字体。为此,我有
- 下载带.ttf扩展名的字体系列文件。
- 将它们添加到资源
- 在info.plist文件中添加应用程序提供的键字体。
自定义字体显示效果。但是我想要做的是,我想把它们设置为systemFont。所以我不必在所有UI元素中设置它们。
我想要类似于
[[UIApplication sharedApplication] systemFont:@Arial];
这可能吗?任何人都可以帮助我吗?
解决方案
为整个应用程序设置一个自定义的字体,即使是不允许自定义字体的控件(例如,选择器)。
在网络和Twitter上的一些研究之后,我解决了使用Method Swizzling是交换方法实现的一个实践。注意:如果不小心使用,这种方法可能是危险的!阅读关于这个讨论:然而,这是做什么的:
- 创建一个UIFont类别,如UIFont + CustomSystemFont。
- 在.m文件中导入
< objc / runtime.h>
- 将.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应用程序中将自定义字体系列设置为系统字体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!