iOS如何使用Runtime全局更换字体

 时间:2024-11-12 05:52:23

1、基于Runtime运行时机制的交换方法实现,首先在工程中新建一个Category继承于UILabel命名为FontCategory,如下:

iOS如何使用Runtime全局更换字体

2、在新建类UILabel+FontCategory.m中导入#import <objc/runtime.h>头文件,此头文件是Runtime框架的载体,如下:

iOS如何使用Runtime全局更换字体

3、在UILabel+FontCategory.m中实现+ (void)load;方法,load方法是在main函数调用之前被OC运行时所调用的钩子方法,同时最重要的一点是每个类的load方法都只会调用一次,所以我们在load方法里面实现具体的方法交换,具体实现如下:

iOS如何使用Runtime全局更换字体

4、具体的自定义交换方法实现如下,在交换方法里面实现font的更改,字体名称使用指定的字体库中的即可,如下:

iOS如何使用Runtime全局更换字体

5、通常我们在使用过程中可能会出现某个label的文本不需要更改字体的情况,这个时候需要我们对此进行特殊处理,使用Tag标识的方法来进行判断然后处理,例如我们可以将不需要更改的label文本的tag设置为10000,在使用运行时交换时遇此tag不进行字体更改,具体实现如下:

iOS如何使用Runtime全局更换字体

6、具体测试示例如下,创建label1设置某种字体,定义label2也设置为某种字体,但是设置tag为我们指定的10000,事实在运行之后label1的字体会更改为我们UILabel+FontCategory.m中更改的字体,而label2字体不会变化。

iOS如何使用Runtime全局更换字体
  • 真空泵排气压力高怎么处理
  • Thinkpad Edge E431 笔记本开箱
  • 怎么卸载删除软件程序
  • 驱动人生解答:买到万年库存电脑怎么办?
  • 剑侠情缘2:剑歌行怎么升级武功
  • 热门搜索
    感恩手抄报内容大全 中国梦手抄报资料 三年级中秋节手抄报 科普小知识手抄报 科学知识手抄报 诚信友善手抄报 民族团结手抄报资料 关于家乡的手抄报 5.1劳动节手抄报 国家公祭日手抄报