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="">
这样,我们就在应用中完美的增加了自己定义字库。应用会显得更加的个性化。让人眼前一亮,脱颖而出!
iOS中怎样加入自己定义的字体的更多相关文章
- 【转】iOS中设置导航栏标题的字体颜色和大小
原文网址:http://www.360doc.com/content/15/0417/11/20919452_463847404.shtml iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参 ...
- iOS中设置导航栏标题的字体颜色和大小
iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参考下. 在平时开发项目的时候,难免会遇到修改导航栏字体大小和颜色的需求,一般使用自定义视图的方法,其实还存在一种方法. 方法一:(自定义视图的 ...
- ios中怎么样调节占位文字与字体大小在同一高度
在设置好字体以后,在占位文字中设置leading这个字体属性,用leading来乘以一个比例(CGFloat)来调节位置.
- iOS中常用的宏定义
转自http://www.jianshu.com/p/be00c3f3cafd //字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[N ...
- IOS中怎么使用微软雅黑字体
http://www.cnblogs.com/GnagWang/archive/2011/09/14/2176266.html
- iOS中忽略NSLog打印信息(通过PCH文件中定义DEBUG宏解决)
iOS中忽略NSLog打印信息 解决办法: 1.新建PrefixHeader_pch文件,在该文件中定义一下宏 //通过DEBUG宏的定义来解决Debug状态下和Release状态下的输出 #ifde ...
- Cordoval在iOS中的运用整理
一:关于Cordoval理论知识 1:PhoneGap是手机平台上流行的一款中间件.它构建在各种手机平台所提供的WebView(浏览器内核)组件的基础之上,使用javascript语言对应用开发者提供 ...
- iOS中支付宝集成
iOS中支付宝集成 如今各种的App中都使用了三方支付的功能,现在将我在使用支付宝支付集成过程的心得分享一下,希望对大家都能有所帮助 要集成一个支付宝支付过程的环境,大致需要: 1>公司:先与支 ...
- iOS中数据库应用基础
iOS 数据库入门 一.数据库简介 1.什么是数据库? 数据库(Database) 是按照数据结构来组织,存储和管理数据的仓库 数据库可以分为2大种类 关系型数据库(主流) PC端 Oracle My ...
随机推荐
- memcached look status
$ STAT pid STAT STAT STAT version STAT pointer_size STAT rusage_user 7.054927 STAT rusage_system 14. ...
- Spring学习之优缺点
Spring 1.Spring工作机制及为什么要用? Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.Spring既是一个AOP框架,也是一IOC容器. SpringFrame ...
- R与数据分析旧笔记(三)不知道取什么题目
连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...
- MyEclipseアンロックの手順
↓ ↓ ↓ ↓ ↓ ↓
- 你需要了解的JS框架
excanvas.js/Chart.js/cubism.js/d3.js/dc.js/dx.chartjs.js/echarts.js/flot.js 用途:构建数据统计图表,兼容多浏览器 ...
- gmpy2安装使用方法
GMP(GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库),它是一个开源的高精度运算库,其中不但有普通的整数.实数.浮点数的高精度运算,还有 ...
- 大数据技术 vs 数据库一体机[转]
http://blog.sina.com.cn/s/blog_7ca5799101013dtb.html 目前,虽然大数据与数据库一体机都很火热,但相当一部分人却无法对深入了解这两者的本质区别.这里便 ...
- Tensorflow tflearn 编写RCNN
两周多的努力总算写出了RCNN的代码,这段代码非常有意思,并且还顺带复习了几个Tensorflow应用方面的知识点,故特此总结下,带大家分享下经验.理论方面,RCNN的理论教程颇多,这里我不在做详尽说 ...
- linux下查找文件、排序、查看文件内容
本文介绍下,在linux系统中,查找文件的命令用法,以及按时间排序找到的目标文件的方法. 1.例如:查找当前目录下所有.ini文件,并按时间排序 示例: find ./ -name *.ini ...
- CFBundleName系列参数的含义
顺带讲一下其他这些选项表示什么意思: CFBundleName: CFBundleName指定了该束的简称.简称应该小于16个字符并且适合在菜单和“关于”中显示.通过把它加入到适当的.lproj子文件 ...