美文网首页ios
iOS项目文件字体统一调大

iOS项目文件字体统一调大

作者: 会游泳de鱼 | 来源:发表于2016-09-20 10:36 被阅读558次

今天项目做完了,测试经理说iOS版本的字体太小,要同意调大(——),欲哭无泪呀,难道要熬夜一个个label改,我的天,我的天,我的天(------)*


废话不多说了,讲下实现原理吧(肯定不是一个个改啦):

创建一个label的分类,然后利用runtime机制替换init,initWithFrame:,awakeFromNib这三个方法,然后在这个方法里修改font就行了,是不是很简单


代码块

步骤1:添加runtime文件

#import <objc/runtime.h>

+(void)load {
    //只执行一次这个方法
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class class = [self class];
        // When swizzling a class method, use the following:
        // Class class = object_getClass((id)self);
        //替换三个方法
        SEL originalSelector = @selector(init);
        SEL originalSelector2 = @selector(initWithFrame:);
        SEL originalSelector3 = @selector(awakeFromNib);
        SEL swizzledSelector = @selector(YHBaseInit);
        SEL swizzledSelector2 = @selector(YHBaseInitWithFrame:);
        SEL swizzledSelector3 = @selector(YHBaseAwakeFromNib);
        Method originalMethod = class_getInstanceMethod(class, originalSelector);
        Method originalMethod2 = class_getInstanceMethod(class, originalSelector2);
        Method originalMethod3 = class_getInstanceMethod(class, originalSelector3);
        Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
        Method swizzledMethod2 = class_getInstanceMethod(class, swizzledSelector2);
        Method swizzledMethod3 = class_getInstanceMethod(class, swizzledSelector3);
        BOOL didAddMethod =
        class_addMethod(class,
                        originalSelector,
                        method_getImplementation(swizzledMethod),
                        method_getTypeEncoding(swizzledMethod));
        BOOL didAddMethod2 =
        class_addMethod(class,
                        originalSelector2,
                        method_getImplementation(swizzledMethod2),
                        method_getTypeEncoding(swizzledMethod2));
        BOOL didAddMethod3 =
        class_addMethod(class,
                        originalSelector3,
                        method_getImplementation(swizzledMethod3),
                        method_getTypeEncoding(swizzledMethod3)); 
        if (didAddMethod) {
            class_replaceMethod(class,
                                swizzledSelector,
                                method_getImplementation(originalMethod),
                                method_getTypeEncoding(originalMethod));
            
        } else {
            method_exchangeImplementations(originalMethod, swizzledMethod);
        }
        if (didAddMethod2) {
            class_replaceMethod(class,
                                swizzledSelector2,
                                method_getImplementation(originalMethod2),
                                method_getTypeEncoding(originalMethod2));
        }else {
            method_exchangeImplementations(originalMethod2, swizzledMethod2);
        }
        if (didAddMethod3) {
            class_replaceMethod(class,
                                swizzledSelector3,
                                method_getImplementation(originalMethod3),
                                method_getTypeEncoding(originalMethod3));
        }else {
            method_exchangeImplementations(originalMethod3, swizzledMethod3);
        }
    });   }
/**
 *在这些方法中将你的字体名字换进去
 */
- (instancetype)YHBaseInit {
    id __self = [self YHBaseInit];
    UIFont * font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:self.font.pointSize+20];
    if (font) {
        self.font= [font fontWithSize:self.font.pointSize+30];
    }
    return __self;
}

-(instancetype)YHBaseInitWithFrame:(CGRect)rect{
    id __self = [self YHBaseInitWithFrame:rect];
    UIFont * font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:self.font.pointSize+20];
    if (font) {
        self.font=font;
         self.font= [font fontWithSize:self.font.pointSize+30];
    }
    return __self;
}

-(void)YHBaseAwakeFromNib{
    [self YHBaseAwakeFromNib];
    UIFont * font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:self.font.pointSize+20];
    if (font) {
        self.font=font;
        self.font= [font fontWithSize:self.font.pointSize+30];
    }
    
}```
>这个分类可以不仅可以用于全体修改文字,还可以全体修改文字的类型

相关文章

  • iOS项目文件字体统一调大

    今天项目做完了,测试经理说iOS版本的字体太小,要同意调大(——),欲哭无泪呀,难道要熬夜一个个label改,我的...

  • iOS 下载字体文件otf和ttf并使用

    前提,设计师喜欢使用iOS系统原先没有的字体类型来设计项目中的文字文案。把需要的otf和ttf的字体文件导入的项目...

  • Mac NSFont 添加自定义字体

    1.下载或者准备好字体文件到本地(一般是.ttf或者.otf文件) 2.字体文件拖进项目 3.检查项目中字体文件是...

  • swift5 - 使用自定义字体

    1. 下载字体文件,并点击安装。 2. 拖入字体到项目中 在项目中创建一个font文件夹,将字体文件拖入其中 3....

  • React Native入门2(项目结构)

    项目结构说明: 1、android文件夹--包含安卓项目文件 2、ios 文件夹--包含iOS项目文件 3、nod...

  • 使用icoMoon自定义字体文件

    项目中要求新增一些自定义的字体文件,由于之前的字体文件库中的字体文件没有新需求所要求的,只好新增字体文件,但是新增...

  • swift 添加字体包到项目

    下载字体包,并添加字体包到项目中。并且点击该字体,确保target是项目本身。image.png 检查你的字体文件...

  • iOS App导入自定义字体

    原文iOS App导入自定义字体 需求 iOS项目中需要导入第三方字体,来进行显示字体样式。 实现方法 1 先找到...

  • 多种中文字体

    功能介绍 使用动态下载中文字体的 API 可以动态地向 iOS 系统中添加字体文件,这些字体文件都是下载到系统的目...

  • vue项目引入三方字体

    vue2项目引入三方字体 注意:前提是字体文件没有问题 ​ 1.新建一个放字体的文件font,放入字体文件,定义一...

网友评论

    本文标题:iOS项目文件字体统一调大

    本文链接:https://www.haomeiwen.com/subject/ratoettx.html