iOS开发收藏文章iOS Developer

iOS开发-UILabel,UIFont更换字体(全部更换为三方

2017-06-02  本文已影响195人  相关函数

最近在项目中,被要求将系统的苹方体全部更换为三方字体,其实更换全部字体相对比更换部分字体来的简单,我们可以使用runtime来解决.

将字体添加到项目中

添加到项目中

使用字体

for(NSString *fontFamilyName in [UIFont familyNames]) {
       NSLog(@"fontFamilyName:'%@'",fontFamilyName);
       for(NSString *fontName in [UIFont fontNamesForFamilyName:fontFamilyName]) {
           NSLog(@"    font:'%@'",fontName);
       }
       NSLog(@"*****************************");
   }

区域更换字体(更换某个UILabel的字体)

更换全部文字的字体

替换 UILabel 的方法

SEL originalSelector = @selector(init);
SEL swizzledSelector = @selector(QQInit);
method_exchangeImplementations(originalMethod, swizzledMethod);
- (instancetype)QQInit {
   id __self = [self QQInit];
   UIFont * font = [UIFont fontWithName:@"FZSEK--GBK1-0" size:self.font.pointSize];
   if (font) {
       self.font=font;
   }
   return __self;
}

替换 UIFont 的方法

+(UIFont *)QQsystemFontOfSize:(CGFloat)fontSize {
   UIFont * font = [UIFont fontWithName:@"FZSEK--GBK1-0" size:fontSize];
   if (!font) {
       return [self QQsystemFontOfSize:fontSize];
   }
   return font;
}

Test

UILabel *lab = [[UILabel alloc] initWithFrame:self.view.bounds];
lab.text = @"按时到合肥拉萨交电话费拉还是快递费卢卡斯 阿萨德会尽快了粉红色的拉客户放假啦是肯定会发生良好的会计法哈收了的看法和沙拉肯定会发了卡萨丁";
lab.font = [UIFont systemFontOfSize:19];
lab.numberOfLines = 0;
[self.view addSubview:lab];
效果
参考文章-->地址
GitHub-->Demo地址
上一篇 下一篇

猜你喜欢

热点阅读