10.UIFont

作者: 二斤寂寞 | 来源:发表于2020-07-29 18:57 被阅读0次

    简介

    UIFont类提供了用于获取和设置字体信息的接口。类提供了访问字体的特点,还提供了访问,这是在布局过程中中使用的字体的字形信息系统。他们通过接受它们作为参数的方法,您可以使用字体对象。

    #define zlFontPFLight(x) ([UIFont fontWithName:@"xxxxxx" size:x])
    

    属性

    // Font attributes
    @property(nonatomic,readonly,strong) NSString *familyName;//字体家族的名字
    @property(nonatomic,readonly,strong) NSString *fontName;//字体的名字
    @property(nonatomic,readonly)        CGFloat   pointSize;//字体大小
    @property(nonatomic,readonly)        CGFloat   ascender;//基准线以上的高度
    @property(nonatomic,readonly)        CGFloat   descender;//基准线以下的高度
    @property(nonatomic,readonly)        CGFloat   capHeight;//大小的高度
    @property(nonatomic,readonly)        CGFloat   xHeight;//小写x的高度
    @property(nonatomic,readonly)        CGFloat   lineHeight NS_AVAILABLE_IOS(4_0);//当前字体下的行高
    @property(nonatomic,readonly)        CGFloat   leading;行间距(一般为0)
    
    image.png

    结论:

    pointSize = fontSize 即字体大小
    lineHeight = ascender + descender
    设置富文本行高为0的时候,依然可以看到行与行之间存在间隙,间隙的高度为lineHeight - pointSize,
    设置富文本的时候,如果文本只有一段,那么计算出来的文本所需高度是lineHeight + lineSpacing;如果有N(N>1)行,那么计算出来的文本所需高度为 lineHeight * N + lineSpacing * (N - 1)

    加载自定义字体

    1、下载所需要的TTF字体文件到工程目录


    image.png

    2、打开Build Phases -> Copy Bundle Resources,确定字体文件已经添加


    image.png

    3、编辑info.plist文件,添加Fonts provided by application并将字体文件加入到该项数组中


    image.png

    4、使用如下代码显示所有字体名称

    //显示所有字体
    - (void)showAllFontBank{
      
        NSArray *familyNames =[[NSArray alloc]initWithArray:[UIFont familyNames]];
        NSArray *fontNames;
        NSInteger indFamily, indFont;
        NSLog(@"[familyNames count]===%lu",(unsigned long)[familyNames count]);
      
        for(indFamily=0;indFamily<[familyNames count];++indFamily){
    
            NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
            fontNames =[[NSArray alloc]initWithArray:[UIFont fontNamesForFamilyName:[familyNames objectAtIndex:indFamily]]];
          
            for(indFont=0; indFont<[fontNames count]; ++indFont){
              
                NSLog(@"Font name: %@",[fontNames objectAtIndex:indFont]);
              
            }
        }
    }
    

    5、控制台输出中寻找字体名称(字体名称有可能和字体文件名不一致)

    6.使用UIFont调用字体

    #define kFontDINAlternateName @"DINAlternate-Bold"
    #define kFontDINAlternate(fontSize) [UIFont fontWithName:kFontDINAlternateName size:fontSize]
    

    参考:
    Understanding fonts and UIFont
    在iOS中如何正确的实现行间距与行高
    iOS开发之SDK国际化

    相关文章

      网友评论

          本文标题:10.UIFont

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