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:剑歌行怎么升级武功
  • 热门搜索
    威海旅游攻略 丹东旅游攻略 呼啦圈减肥 冬季减肥 自由女神像简介 脑血栓是怎么形成的 黑枸杞怎么吃最好 郑多燕减肥操 一个月减肥20斤 股票日线怎么看