iOS添加自定义字体

  字体有相应的字体文件,一般是以ttf或者otf为后缀,我们可以去一些第三方网站去下载(也有人专门做了字体出售),Google Fonts是个比较好的网站,可以去找找看。我们就用Open Sans这个字体来做例子吧。首先当然是去下载字体文件,下载后发现是10个ttf文件,没错,这是一个系列的字体,有粗体,有斜体,还有不同的大小,方便用户在不同的场景下使用。

      

          

在准备好了字库文件后,就可以加到项目中了,是把ttf文件加入到项目中,这里需要注意的是要把这些ttf加入到bundle中,也就是说,最后的ipa文件中必须包含有这些ttf(否则应用中到哪里去找字库呢?)

 在加入后,我们可以分别在FileExplore和Build Phase里面看到这些内容,如下图所示:

      

      设置到这里还有最后一步,就是在info.plist文件中加入相应信息,这一步实际上实在项目的Info页里面增加Fonts provided by application项,并设置相应的ttf文件进去,这样就告诉了应用,我要加入新的字体了,对应的字体文件是哪些。

      

      到这里,字库文件应该是准备好了,下面我们需要确认一下字库的名字,因为代码中需要用名字来指定字体。通常来说,这个名字和文件名是相同的,但也有不同的时候,所以这一步一定不要忽略。

   字库的名字这里是通过NSLog这个打印语句来获得,我们看一下代码:

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

     这段代码我们逐个读入字体族的名字,然后每个族中读取每种字体的名字。从代码中我们可以知道,实际上我们打印了所有的字体,全部列出实在太长了,所以截了一部分列出来,我们的Open Sans也在其中。

      

一、统一替换的话需要写个分类 重写系统的systemFontOfSize

如果想把旧工程的字体整体替换掉, 又不想改动已有代码, 可以重写

systemFontOfSize 方法.

#import
 
@interfaceUIFont (JHCustom)
 
+ (UIFont *)systemFontOfSize:(CGFloat)fontSize;
 
@end
#import "UIFont+custom.h"
 
@implementationUIFont (JHCustom)
 
+ (UIFont *)systemFontOfSize:(CGFloat)fontSize
 
{
return[UIFont fontWithName:@"SourceSansPro-Light"size:fontSize];
 
}
 
@end

systemFontOfSize 方法都会用新方法代替, 从而实现整体替换的效果.

二、不统一替换的话 自己给UIFont写个分类(用代码设置字体的大小)

#import "UIFont+JHFont.h"

@implementation UIFont (JHFont)
+(UIFont *)regularFontWithSize:(CGFloat)size{
    return [UIFont fontWithName:@"SourceSansPro-Regular" size:size];
}

+(UIFont *)lightFontWithSize:(CGFloat)size{
    return [UIFont fontWithName:@"SourceSansPro-Light" size:size];
}

+(UIFont *)boldFontWithSize:(CGFloat)size{
    return [UIFont fontWithName:@"SourceSansPro-Bold" size:size];
}

 

xib中也是可以用的

原文地址:https://www.cnblogs.com/junhuawang/p/6769858.html