您的位置:首页 > 移动开发 > IOS开发

iOS添加自定义字体

2017-04-26 17:50 204 查看
字体有相应的字体文件,一般是以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中也是可以用的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: