iOS下载使用自定义字体

使用内置字体就不说了,这里说一下如何下载并使用自定义的字体
第一步,下载字体
首先得要下载ttf文件,下面代码中的dict为

{
    id = 23eb3318ae46465f8ffe52e74fb68751;
    name = "\U534e\U5eb7\U53ef\U7231\U82f1\U6587\U4f53";
    url = "font/2017/04/19/90f8f66d94fe43578bd477700c6de98a.ttf";
}

则URL应为:http://www.zume100.com:8091/app/font/downloadFont?id=23eb3318ae46465f8ffe52e74fb68751
下载时要导入第三方库#import "AFNetworking.h"

  NSString * url = [NSString stringWithFormat:@"%@/font/downloadFont?id=%@",[ZumeSysConfig getServerUrl],[dict objectForKey:@"id"]];
  NSURL * URL = [NSURL URLWithString:url];
  NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
  AFURLSessionManager * manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
  NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  NSURLSessionDownloadTask *_downloadTask;
  _downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
                    NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
                    NSString * str = [dict objectForKey:@"name"];
                    NSString *path = [cachesPath stringByAppendingPathComponent:str];
                    return [NSURL fileURLWithPath:path];
                } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
                    NSString *imgFilePath = [filePath path];
                }];
                    [_downloadTask resume];
            }

下载完成,文件地址是imgFilePath
第二部,使用ttf

 NSString *imgFilePath = [filePath path];
 NSURL *fontUrl = [NSURL fileURLWithPath:imgFilePath];
 CGDataProviderRef fontDataProvider =  CGDataProviderCreateWithURL((__bridge CFURLRef)fontUrl);
 CGFontRef fontRef = CGFontCreateWithDataProvider(fontDataProvider);
 CGDataProviderRelease(fontDataProvider);
 CTFontManagerRegisterGraphicsFont(fontRef, NULL);
 NSString *fontName = CFBridgingRelease(CGFontCopyPostScriptName(fontRef));
 label.font = [UIFont fontWithName:fontName size:24];

上面的fontName就是对应下载ttf文件的字体,这样就能直接使用了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如果用fontWithName:的话,后面的参数不能加.ttf 使用自定义字体的实现 获取一下系统中所有自带字体 ...
    老骚鹅阅读 2,374评论 0 3
  • Objective-C代码经常出现一些情况,就是几个对象都以某种方式互相引用,从而形成"环"(cycle)。由于O...
    CoderCurtis阅读 232评论 0 0
  • #焦山# 焦山才不会让你轻易到达呢。 隔着脉脉碧水,翡翠浮玉上塔顶尖尖。 佳人在水一方,只有乘舟渡江方可一睹真容。...
    翩鴻阅读 355评论 0 1
  • 今天已经是新年的第二天,这篇短文本该于昨日完成,可是由于种种原因被搁浅了。于是今天才来复盘我的2016。 其实20...
    王美淇阅读 361评论 0 1
  • 每当老师提起君子与小人的时候,很多人都会想起君子是什么,小人是什么,在班级里很多人表面上是君子,而在背后又是一...
    咖啡_1ca9阅读 543评论 0 0