美文网首页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