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 ...
随机推荐
- 关于 android Intent 传对象和对象数组的一些操作
直接开正题,Intent传递值就是平常那些很简单的,接下来介绍传递 对象,和 对象数组 1 .intent 传递自定义的 对象 - 实体类继承 Serializable public class A ...
- 一周学会Mootools 1.4中文教程:(1)Dom选择器
利器: 君欲善其事须先利其器,好吧因为我们的时间比较紧迫,只有六天而已,那么六天的时间用死记硬背的方式学会Mt犹如天方夜谭,因此我们需要借鉴一下Editplus的素材栏帮我们记忆就好了,当我们需要用到 ...
- 树莓派高级GPIO库,wiringpi2 for python使用笔记(二)高精度计时、延时函数
学过单片机的同学应该清楚,我们在编写传感器驱动时,需要用到高精度的定时器.延时等功能,wiringpi提供了一组函数来实现这些功能,这些函数分别是: micros() #返回当前的微秒数,这个数在调用 ...
- android 解决ViewPager双层嵌套的滑动问题
解决ViewPager双层嵌套的滑动问题 今天我分享一下ViewPager的双层嵌套时影响内部ViewPager的触摸滑动问题 之前在做自己的一个项目的时候,遇到广告栏图片动态切换,我第一时间想到的就 ...
- Dialog with HTML skin using CDHtmlDialog and SetWindowRgn
Introduction This program demonstrates how to use CDHtmlDialog and SetWindowRgn functions to give a ...
- UVA-Matrix Chain Multiplication(栈)
Matrix Chain Multiplication Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C, ...
- setImageResource与setImageBitmap的区别
同样的布局文件,小分辨率手机: 1.使用setImageBitmap设置时,出现如下现象: 2.使用setImageResource时,图片显示正常 原因: setImageResource(id) ...
- sql的强大功能(看一条sql解决的复杂业务)
一条sql语句解决的复杂业务,请往下看: 业务介绍:一个单位有多个立项(立项信息表里有单位id),每个立项可能被预警多次(预警信息表里的uuid字段的值里包含有立项id或单位id),每 ...
- angular学习(一):动态模板总结
近期在项目中用到了angular,之前从未用到过此js lib库,因为项目也比較着急,学习的寥寥草草.到眼下为止也仅仅是学会皮毛而已,现将自己学习的知识总结例如以下: 备注1: 版本:1.2.2 备注 ...
- C++中delete 和delete[]的区别
c++告诉我们在回收new分配的单个对象的内存空间的时候用delete, 回收new[ ]分配的一组对象的内存空间的时候用 delete[ ]; #include <iostream> ...