字体有相应的字体文件,一般是以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也在其中。

一、统一替换的话需要写个分类 重写系统的systemFontOfSize

如果想把旧工程的字体整体替换掉, 又不想改动已有代码, 可以重写

systemFontOfSize 方法.

#import

@interfaceUIFont (JHCustom)

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize;

@end
#import "UIFont+custom.h"

@implementationUIFont (JHCustom)

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize

{
return[UIFont fontWithName:@"SourceSansPro-Light"size:fontSize]; } @end

systemFontOfSize 方法都会用新方法代替, 从而实现整体替换的效果.

二、不统一替换的话 自己给UIFont写个分类(用代码设置字体的大小)

#import "UIFont+JHFont.h"

@implementation UIFont (JHFont)
+(UIFont *)regularFontWithSize:(CGFloat)size{
return [UIFont fontWithName:@"SourceSansPro-Regular" size:size];
} +(UIFont *)lightFontWithSize:(CGFloat)size{
return [UIFont fontWithName:@"SourceSansPro-Light" size:size];
} +(UIFont *)boldFontWithSize:(CGFloat)size{
return [UIFont fontWithName:@"SourceSansPro-Bold" size:size];
}

 

xib中也是可以用的

iOS添加自定义字体的更多相关文章

  1. iOS添加自定义字体方法

    1:获取字体文件 从各种渠道下载字体文件ttf, 网站或者从别的ipa里扣出来.(以fzltxh.ttf为例) 2:将fzltxh.ttf文件拷贝到工程中 3:在Info.plist中添加项: Fon ...

  2. IOS添加自定义字体库

    1.将需要的字体库xxx.ttf添加到工程中,注意一定要在copy bundle resources中存在,如果没有添加上去 2.在info.plist 文件中添加 fonts provided by ...

  3. CSS3 里添加自定义字体

    添加自定义字体是从 CSS3 开始的,下载到的字体可以在网页中使用. 下载字体 在网上找字体下载,文件后缀名有 ttf.otf 等. 在 CSS 里加载字体 @font-face { font-fam ...

  4. 微信小程序富文本渲染组件html2wxml及html2wxml代码块格式化在ios下字体过大问题

    1.组件使用: 之前微信小程序的富文本渲染组件用的wxParse,对普通富文本确实可以,但是对于代码格式pre标签则无法使用. 下面这个html2wxml很不错,可以支持代码高亮. 详细文档:http ...

  5. Android学习笔记之,调用系统图库,添加自定义字体,屏幕截图

    新年开始的第一天就来学习了慕课迎春活动中的Android心愿分享一课,学到了几个知识点,在此记录一下. 1.调用系统图库调用系统图库用的是intent,步骤为弹出系统图库选择器,选择图片后获取到所选择 ...

  6. iOS 设置字体样式

    1.iOS设置字体样式   label.font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:24];   字体名如下: F ...

  7. ESP32 开发笔记(十二)LittlevGL 添加自定义字体和物理按键

    LittlevGL 添加自定义字体获取字库 ttf 文件可以从一些网站上获取字库文件,比如请注意字体许可证 生成源文件使用 LittlevGL 提供的字库文件转换工具,将 ttf 字库文件转换为源文件 ...

  8. iOS 关于字体根据不同屏幕尺寸等比适配的问题(zz)

    http://www.jianshu.com/p/5815e81abb52 背景 去年的六月份开始了一个新的项目,此项目支持的设备从4S开始一直到6+,也就是说屏幕的尺寸最小的320x480 最大的1 ...

  9. iOS FONT字体名

    下面这段代码可以查看ios中可用的字体,具体那些字体长什么样,可以查看字体册工具. NSArray *familyArray = [UIFont familyNames]; for (id famil ...

随机推荐

  1. 原创:《Excel在零售及电商行业数据化管理中的应用》之“什么是数据化管理?

    <Excel在零售及电商行业数据化管理中的应用>之“什么是数据化管理?”                     各位: “随着全零售时代的到来,传统商业的每一个供应链细节都离不开数据的支 ...

  2. e800. 监听JSlider的数值变化

    // Create horizontal slider JSlider slider = new JSlider(); // Register a change listener slider.add ...

  3. mysql函数find_in_set()

    SELECT FIND_IN_SET('b','a,b,c,d'); 结果:2 SELECT * from video where find_in_set(id,'1,2,3,4'); 查找id在‘1 ...

  4. Linux Shell的 & 、&& 、 ||

    Linux Shell的 & .&& . || 收藏 hanzhankang 发表于 3年前 阅读 18472 收藏 20 点赞 4 评论 0 开程序员的淘宝店!寻找开源技术服 ...

  5. T4 好用的Vs扩展

  6. crontab(定时任务操作)

    定时任务顾名思义就是在某一时间点自动进行任务操作.在做Pgsql的备份利用crontab进行定时操作, 使用起来比较方便.故分享具体的定时编辑命令:crontab -e 首先从crontab的文件分析 ...

  7. [linux]Error: failure: repodata/repomd.xml from fedora: [Errno 256] No more mirrors to try.

    在使用fedora17 系统的yum源的时候出现了例如以下错误: Error: failure: repodata/repomd.xml from fedora: [Errno 256] No mor ...

  8. [SQLite3]connection string的连接池参数引发的错误

    最近在.net中使用Sqlite数据库,发现.net的驱动做得不错,而且实现了加密功能.于是想给自己的数据库加上口令,结果,多次实验都以失败告终: 链接数据库,然后ChangePassword都成功执 ...

  9. 【LSTM】Understanding-LSTMs

    http://colah.github.io/posts/2015-08-Understanding-LSTMs/

  10. windows xp\2003 之上的操作系统多启动(多系统)引导

    概要技术: 微软自windows vista以来的操作系统引导bootmgr是真的很强大,只是因为其全底层的命令操作,且不友好的命令帮助让人望而却步! 基本技术概要提点: boot.ini 支持:xp ...