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 ...
随机推荐
- R与数据分析旧笔记(六)多元线性分析 下
逐步回归 向前引入法:从一元回归开始,逐步加快变量,使指标值达到最优为止 向后剔除法:从全变量回归方程开始,逐步删去某个变量,使指标值达到最优为止 逐步筛选法:综合上述两种方法 多元线性回归的核心问题 ...
- video详解 HTML5中的视频:
一.video 视频的方法.属性.事件详解 方法:play() 播放 pause() 暂停 属性:currentTime播放到当前的时间 duration视频的总时长 事件:ended 播放完 ...
- java附件上传下载磁盘版
ACTION public class UploadAction extends BaseAction { private static final long serialVersionUID = 1 ...
- 浅谈Java泛型中的extends和super关键字(转)
通配符 在本文的前面的部分里已经说过了泛型类型的子类型的不相关性.但有些时候,我们希望能够像使用普通类型那样使用泛型类型: 向上造型一个泛型对象的引用 向下造型一个泛型对象的引用 向上造型一个泛型对象 ...
- 《Java4Android视频教程》学习笔记(二)
一:面向对象 1.对象 ①对象的使用方法 对象.变量 对象.方法 ②匿名对象 new A().方法 new A().变量 匿名对象会被分配到对内存中 java内存处理机制会对一定时间内无指针指向的对象 ...
- 【iOS知识学习】_如何判断手机是否为静音模式
目前我涉及的app要获取系统是否为静音模式,到网上搜了一下,千篇一律的都是一样的,而且都是iOS5.0以前才适应的知识,这个大家去搜一下就会很容易发现,找了很久终于找到一个5.0以后适用的,那位大神的 ...
- 设计模式入门之桥接模式Bridge
Abstraction:抽象部分的父类,定义须要实现的接口.维护对实现部分的引用,从而把实现桥接到Implementor中去 Implementor:实现部分的接口 RefinedAbstractio ...
- os基础
命令:指计算机用户要求计算机系统为其工作的指示: 命令的表示形式: 1.字符形式: 2.菜单形式: 3.图形形式: 命令的使用方式:1. 脱机使用方式 off_line 2.联机使用方式 ...
- JQuery DataTable插件
参考文件: http://blog.csdn.net/xuechongyang/article/details/8424897 http://blog.csdn.net/llhwin2010/arti ...
- Android核心基础
第三代移动通讯技术(3rd Generation) ,支持高速数据传输的蜂窝移动通讯技术.3G与2G的主要区别是传输数据的速度. 1987年,第一台模拟制式手机(1G)问世,只能进行语音通话,型号:摩 ...