iOS中怎样加入自己定义的字体
苹果对于开发,确实在细节方面下了非常大的功夫,只是不管一个平台下多大的功夫,仍然会有些需求是无法涵盖的。比方字体吧。
我们的应用为了能更加个性化。会须要不同的字体。有时候有些字体是非常特殊的。甚至是购买的。那么这些字体怎样加到项目中去呢?
字体有对应的字体文件。通常是以ttf或者otf为后缀,我们能够去一些第三方站点去下载(也有人专门做了字体出售),Google Fonts是个比較好的站点,能够去找找看。我们就用Open Sans这个字体来做样例吧。
首先当然是去下载字体文件,下载后发现是10个ttf文件,没错,这是一个系列的字体,有粗体,有斜体。还有不同的大小,方便用户在不同的场景下使用。
在准备好了字库文件后,就能够加到项目中了,是把ttf文件增加到项目中,这里须要注意的是要把这些ttf增加到bundle中。也就是说,最后的ipa文件里必须包括有这些ttf(否则应用中到哪里去找字库呢?)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FrdWxhZmx5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
在增加后,我们能够分别在FileExplore和Build Phase里面看到这些内容,例如以下图所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FrdWxhZmx5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
设置到这里还有最后一步。就是在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!";
效果是这种:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FrdWxhZmx5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
这样,我们就在应用中完美的增加了自己定义字库。应用会显得更加的个性化。让人眼前一亮,脱颖而出!
最新文章
- 【JavaScript】 Webpack安装及文件打包
- PHP中的Memcache详解
- SQL中的连接查询及其优化原则
- cURL 学习笔记与总结(1)概念
- HTML5之 Microdata微数据
- 《玩转shutdown》-linux命令五分钟系列之十三
- 在Windows的Wamp环境下安装Composer
- 1625: [Usaco2007 Dec]宝石手镯
- SoapUI中读取法文字符
- bzoj 3242: [Noi2013]快餐店
- 一篇文章带你学会Linux三剑客之一:awk
- Goroutine通信与thread in java间的通信
- java.sql.SQLException: Column count doesn't match value count at row 1 解决办法
- 将ubuntu14.04 从mysql从5.5删除之后安装5.7遇到的一些问题(本篇不讨论热升级)
- 自学Aruba4.1-Aruba开机初始化
- Node.js 搭建HTTP服务器,提供文件下载
- Mysql 多字段去重
- Only the original thread that created a view hierarchy can touch its views解决办法
- Ethereum 源码分析之 accounts
- Ensemble_learning 集成学习算法 stacking 算法
热门文章
- POJ1323-Game Prediction
- 服务器搭建纪录linux+mysql+nginx+php
- PHP开发APP接口
- ZOJ 3209 Treasure Map 精确覆盖
- php mvc 框架演示
- iOS开发中,应用内直接跳转到Appstore
- Lua环境配置 windows + VS
- cocos2d-x 3.0 新特性样例
- MVC5.0 中如何提高Controller 的优先级
- SqlServer 2015修改表时出现“save changes is not permitted…”的解决方法