前言
最近公司產(chǎn)品想更改APP整體的字體,并且H5頁面的字體也要與APP原生的字體保持一致。
1.APP更改字體
這個比較簡單,按照常規(guī)方法更改即可
(1).將字體文件放入工程
(2).在info.plist中增加Fonts provided by application 數(shù)組類型,并將添加的字體文件添加
(3).找到字體文件對應(yīng)的具體的我們要用的字體名字
NSArray *fontFamilies = [UIFont familyNames];
for (NSString *fontFamily in fontFamilies){
NSArray *fontNames = [UIFont fontNamesForFamilyName:fontFamily];
NSLog (@"%@: %@", fontFamily, fontNames);
}
(4).在設(shè)置font的地方利用
[UIFont fontWithName:@"具體的字體名" size:15];
2.WKWebView更改字體
有多種方案可以實現(xiàn),本人目前采用的是將字體文件轉(zhuǎn)為base64,然后將baser64通過css注入到webview的頁面中。
在WKWebView的代理方法中:
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
添加如下代碼:
NSString *fileUrl = [[NSBundle mainBundle] pathForResource:@"字體文件名" ofType:@"TTF"];
NSData *fileData = [NSData dataWithContentsOfFile:fileUrl];
NSString *boldFont = [fileData base64EncodedStringWithOptions:0];
NSMutableString *javascript = [NSMutableString string];
[javascript appendString:[NSString stringWithFormat:@"\
var boldcss = '@font-face { font-family: \"%@\"; src: url(data:font/ttf;base64,%@) format(\"truetype\");} *{font-family: \"%@\" !important;}'; \
var head = document.getElementsByTagName('head')[0], \
style = document.createElement('style'); \
style.type = 'text/css'; \
style.innerHTML = boldcss; \
head.appendChild(style);",@"字體文件對應(yīng)的具體的字體名",boldFont,@"字體文件對應(yīng)的具體的字體名"]];
[webView evaluateJavaScript:javascript completionHandler:nil];