美文网首页iOS开发(OC)
iOS利用runtime全局修改系统字体或者三方字体

iOS利用runtime全局修改系统字体或者三方字体

作者: 爱恨的潮汐 | 来源:发表于2018-06-04 11:41 被阅读2次
    iOS利用runtime全局修改系统字体或者三方字体

    .h

    //利用runtime交换方法,全局修改系统字体或者三方字体
    #import <UIKit/UIKit.h>
    
    @interface UIFont (FontNameSize)
    
    @end
    

    .m

    //利用runtime交换方法,全局修改系统字体或者三方字体
    #import "UIFont+FontNameSize.h"
    
    @implementation UIFont (FontNameSize)
    //只执行一次的方法,在这个地方 替换方法
    +(void)load{
        
        //保证线程安全
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            Class class = [self class];
            //拿到系统方法
            Method orignalMethod = class_getClassMethod(class, @selector(systemFontOfSize:));
            //拿到自己定义的方法
            Method myMethod = class_getClassMethod(class, @selector(test_systemFontOfSize:));
            //交换方法
            method_exchangeImplementations(orignalMethod, myMethod);
            
            //注意,只有调用了下面这个方法的控件才会执行字体修改,默认字号大小的控件不会修改。
            //[UIFont systemFontOfSize:12]
        });
    }
    
    //自己的方法
    + (UIFont *)test_systemFontOfSize:(CGFloat)fontSize{
    //系统字体:GillSans-BoldItalic  AppleSDGothicNeo-Light  HiraMaruProN-W4
        UIFont *font = [UIFont fontWithName:@"AppleSDGothicNeo-Light" size:fontSize];
        if (!font){
            //判空,如果字体不存在就返回系统默认字体,不然会崩溃
            return [self test_systemFontOfSize:fontSize];
        }
        return font;
    }
    
    @end
    

    相关文章

      网友评论

        本文标题:iOS利用runtime全局修改系统字体或者三方字体

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