概覽:
1.支持的字體格式
2.如何導(dǎo)入字體文件
3.如何找到字體名稱
4.如何使用字體
一.支持的字體格式
ttf 或 ttc 都可以,可以自行去百度上找字體庫
二.如何導(dǎo)入字體文件
1.直接往工程里拖,如下圖
61930236-7056-4C5A-967C-415E0589A01F.png
2.配置Info.plist文件,添加該字體的文件名稱
<key>UIAppFonts</key>
<array>
<string>xindiFont.ttf</string>
</array>
三.如何找到字體名稱
由于網(wǎng)上下載下來的字體文件名,并不一定是該字體實(shí)際的名稱.所以我們需要通過代碼找到字體的實(shí)際字體名稱
1.先存儲未添加字體時(shí)的所有字體名列表
2.再加入字體文件
3.先編譯一次
4.獲取當(dāng)前的所有字體名列表,和之前的存儲的舊列表進(jìn)行交叉對比找到新字體的名稱
代碼如下:
//存儲未添加的所有字體列表
+(void)saveAllfamilyNames{
//存儲地址可以自己更改
[[UIFont familyNames] writeToFile:[self cachesPathWithFileName:@"AMFont.plist"] atomically:YES];
}
//使用NSPredicate交叉比對本次與上次存儲的字體列表,獲取新字體的名稱
+(NSArray*)acquireNewFontNamesFromComparison{
//地址為之前存舊列表的地址
NSArray* oldFontNameArray = [NSArray arrayWithContentsOfFile:[self cachesPathWithFileName:@"AMFont.plist"]];
NSArray* newFontNameArray = [UIFont familyNames];
//建立predicate規(guī)則 (不在oldFontNameArray中的元素)
NSPredicate *differencepredicate = [NSPredicate predicateWithFormat:@"NOT(SELF in %@)",oldFontNameArray];
//使用predicate規(guī)則,得到新字體中不在舊字體數(shù)組中的元素
NSArray *diffrenceArray = [newFontNameArray filteredArrayUsingPredicate:differencepredicate];
return diffrenceArray;
}
上面獲取緩存地址用到了自定義方法,貼一下代碼
//caches地址
-(NSString*)cachesPathWithFileName:(NSString*)fileName{
NSString* cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
return [cachePath stringByAppendingPathComponent:fileName];
}
四.如何使用字體
通過上面的交叉對比,并打印diffrenceArray的值,得到"SentyMARUKO"為我們添加的字體名
可以通過Storyboard或Xib中設(shè)置UILabel或其他文字控件的字體屬性
font -> custom
Family -> 字體名
FA5263E2-4D2D-4587-A0FE-EC1C8D96F796.png
或直接用代碼進(jìn)行設(shè)置
self.changeWithCodeLB.font = [UIFont fontWithName:@"SentyMARUKO" size:16];