• 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
Copyright © 2020-2023  润新知