問題:iOS中是如何使用自定義字體的笼沥?
字體是軟件開發(fā)中個(gè)性化的一個(gè)重要元素铣揉,系統(tǒng)自帶了很多豐富的字體,但有時(shí)候并不能滿足個(gè)性化的需求蛾魄,這時(shí)候可以向工程中添加自定義的系統(tǒng)字體虑瀑,然后就可以像使用系統(tǒng)字體一樣使用。字體文件最常用的為ttf等格式滴须。
導(dǎo)入自定義字體過程很簡單:添加資源包到工程->在info.plist文件中注冊字體->在工程Bundle Resource中復(fù)制字體資源包->代碼檢測查詢加入的字體并使用
添加資源包
addFile添加字體資源包或者直接將字體包拖到工程資源文件夾下:
info.plist文件中注冊字體
在工程的info.plist屬性列表中添加Fonts provided by application數(shù)組屬性并在其下添加要加入的自定義字體項(xiàng)舌狗。注意,這里在plist文件中寫的是文件的全稱扔水,包括文件后綴痛侍,文件的名字我們是可以隨便改的,但建議用本來的字體族名魔市,例如這里是:KristenITC主届,字體族名是不會變的赵哲,之后具體代碼中使用的時(shí)候是用的字體族名而不是自定義的文件名。本來的字體族名可以右鍵查看字體文件的詳細(xì)信息君丁,里面的全稱是本來的字體族名枫夺,而名稱是自定義的。
復(fù)制資源包到Bundle Resource
檢測是否成功加入字體
在具體使用之前绘闷,我們可以先通過UIFont類提供的函數(shù)打印出系統(tǒng)所有的字體列表橡庞,并找到我們更添加的字體看是否添加成功,還可以具體看到我們的資源包有哪些具體的字體樣式印蔗,例如該字體族的斜體毙死、粗體、粗斜體等等喻鳄。打印字體族列表的代碼如下:
/** * 檢查自定義字體族是否成功加入 */
// 取出系統(tǒng)安裝了的所有字體族名 NSArray *familyNames = [UIFont familyNames];
NSLog(@"系統(tǒng)所有字體族名:%@", familyNames);
// 打印字體族的所有子字體名(每種字體族可能對應(yīng)多個(gè)子樣式字體扼倘,例如每種字體族可能有粗體、斜體除呵、粗斜體等等樣式) for(NSString *familyName in familyNames) {
// 字體族的所有子字體名 NSArray *detailedNames = [UIFont fontNamesForFamilyName:familyName];
NSLog(@"\n字體族%@的所有子字體名:%@", familyName,detailedNames);
}
這里可以從字體組列表找到我們剛添加的字體族KristenITC:
和字體族KristenITC下的具體字體樣式再菊,這里只有一種也是默認(rèn)的一種:KristenITC-Regular:
使用字體
確定字體加入系統(tǒng)之后就可以像自帶的系統(tǒng)字體一樣直接使用了:
// 設(shè)置label的字體和大小(這里直接使用字體族名也是可以的,有默認(rèn)的子字體樣式颜曾,也可以根據(jù)需求具體到自字體比如這里的:KristenITC-Regular) [_label setFont:[UIFont fontWithName:@"KristenITC" size:35.0]];