詳解iOS設(shè)置字體的三種方式
有時(shí)候項(xiàng)目需要顯示一些非系統(tǒng)的字體達(dá)到一些UI的效果,目前設(shè)置字體有三種方式,默認(rèn)方式、bundle方式,coreText方式。
1 默認(rèn)方式
這種方式就是正常的字體設(shè)置方式
label.font = [UIFont fontwithname:@”Blazed” size:42];
至于第一個(gè)參數(shù)的名字,可以通過以下方法輸出所有字體名字列表
[UIFont familyNames]
只要名字列表中存在的,都可以用這種方式關(guān)聯(lián)到對(duì)應(yīng)的字體上。
2 綁定自定義的字體包
其實(shí)第二種方式和第一種方式在代碼上是一樣的,依舊是通過名字設(shè)置字體
label.font = [UIFont fontwithname:@”Blazed” size:42];
只是要想使用往上下載的字體文件,先將字體文件加到系統(tǒng)的字體目錄中。
具體操作如下:
1 下載目標(biāo)的字體文件并添加到工程中,名字為fontTest.ttf
2 在info.plist中,添加 Fonts provided by application 項(xiàng), 打開對(duì)應(yīng)的數(shù)組,可以設(shè)置多個(gè)字體,在Item0中 輸入fontTest.ttf。
這個(gè)時(shí)候再執(zhí)行[UIFont familyNames],新加的字體就存在于列表中,那么直接設(shè)置名字就可以設(shè)置上字體了。
3 通過CoreText綁定字體
第二種方式基本基本就可以滿足大部分的需求,只有一個(gè)問題,就是字體包大小不一定,幾十兆到幾百兆不等,隨著其他資源包一起打進(jìn)ipa會(huì)讓包變得很大,尤其是有的業(yè)務(wù)需要很多的字體包,那么肯定是需要?jiǎng)討B(tài)網(wǎng)絡(luò)下載的,這個(gè)動(dòng)態(tài)下載的字體文件目前蘋果開放的接口是無法動(dòng)態(tài)添加配置信息到info.plist的。這個(gè)時(shí)候就需要CoreText接口動(dòng)態(tài)綁定到內(nèi)存中。
當(dāng)然,這里需要引入CoreText框架
#import < CoreText/CoreText.h>
+(UIFont*)doGetCustomFontWithPath:(NSString*)path size:(CGFloat)size
{
if (!path) {
return [UIFont systemFontOfSize:21];
}
// NSString *path2 = [path stringByAppendingString:@"1"];
NSURL *fontUrl = [NSURL fileURLWithPath:path];
// [[NSFileManager defaultManager] copyItemAtPath:path toPath:path2 error:nil];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)fontUrl);
CGFontRef fontRef = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
CTFontManagerRegisterGraphicsFont(fontRef, NULL);
NSString *fontName = CFBridgingRelease(CGFontCopyPostScriptName(fontRef));
UIFont *font = [UIFont fontWithName:fontName size:size];
CGFontRelease(fontRef);
return font;
}
總結(jié)
以上所述是小編給大家介紹的iOS設(shè)置字體的三種方式,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
實(shí)例解析iOS開發(fā)中系統(tǒng)音效以及自定義音效的應(yīng)用
這篇文章主要介紹了iOS開發(fā)中系統(tǒng)音效以及自定義音效的應(yīng)用,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-10-10
詳解IOS串行隊(duì)列與并行隊(duì)列進(jìn)行同步或者異步的實(shí)例
這篇文章主要介紹了詳解IOS串行隊(duì)列與并行隊(duì)列進(jìn)行同步或者異步的實(shí)例的相關(guān)資料,IOS中GCD的隊(duì)列分為串行隊(duì)列和并行隊(duì)列,任務(wù)分為同步任務(wù)和異步任務(wù),他們的排列組合有四種情況這里就一一分析下,需要的朋友可以參考下2017-07-07
iOS應(yīng)用開發(fā)中UIView添加邊框顏色及設(shè)置圓角邊框的方法
這篇文章主要介紹了iOS應(yīng)用開發(fā)中UIView添加邊框顏色及設(shè)置圓角邊框的方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-02-02
iOS實(shí)現(xiàn)點(diǎn)擊狀態(tài)欄自動(dòng)回到頂部效果詳解
在IOS開發(fā)過程中,經(jīng)常會(huì)有這種需求,需要通過點(diǎn)擊狀態(tài)欄返回到頂部,給用戶更好的體驗(yàn)效果,下面這篇文章給大家詳細(xì)介紹了實(shí)現(xiàn)過程,有需要的可以參考借鑒。2016-09-09
IOS中實(shí)現(xiàn)圖片點(diǎn)擊全屏預(yù)覽
IOS作為一款智能手機(jī)系統(tǒng),在查看圖片的時(shí)候,如果能夠?qū)崿F(xiàn)全屏,對(duì)用戶來說有很好的視覺體驗(yàn),其實(shí)實(shí)現(xiàn)起來非常的簡單,下面我就結(jié)合一個(gè)簡單的代碼給大家來分享一下,,需要的朋友可以參考下2015-11-11
IOS利用CocoaHttpServer搭建手機(jī)本地服務(wù)器
這篇文章主要介紹了IOS利用CocoaHttpServer搭建手機(jī)本地服務(wù)器的步驟,幫助大家更好的理解和學(xué)習(xí)使用ios開發(fā),感興趣的朋友可以了解下2021-04-04

