zoukankan      html  css  js  c++  java
  • 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也在当中。

          

          我们看一下,里面有些字体名字和文件名称同样,如OpenSans-Bold;有些字体名字和文件名称不同,如OpenSansLight-Italic。

    至此,准备工作最终所有完毕了。

          准备工作相当的繁琐,每一步都不能省,但以下正式使用就很easy了,我做了三个label,分别放入了三种字体,为了向大师致敬。都显示Hello World!的字样。

          代码是这种:

          

        self.label1.font = [UIFont fontWithName:@"OpenSans-Bold" size:20.0];
        self.label1.text = @"Hello World!";
        self.label2.font = [UIFont fontWithName:@"OpenSans-BoldITalic" size:20.0];
        self.label2.text = @"Hello World!";
        self.label3.font = [UIFont fontWithName:@"OpenSans-Light" size:20.0];
        self.label3.text = @"Hello World!";

          效果是这种:

          

          这样,我们就在应用中完美的增加了自己定义字库。应用会显得更加的个性化。让人眼前一亮,脱颖而出!


  • 相关阅读:
    c++ 中pair类模板的用法详解
    求解Catalan数,(大数相乘,大数相除,大数相加)
    POJ--2823--Sliding Window----单调队列问题
    POJ2796 Feel Good -- 单调队列
    Graham扫描法 --求凸包
    山东理工大学第七届ACM校赛-G 飞花的传送门
    NKOJ1236 a^b (数论定理的应用)
    大数相减 C语言
    SPFA ----模板 O(kE) (k一般不超过2)
    C++大数相加
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5183820.html
Copyright © 2011-2022 走看看