如何在iOS應用中使用自定義字體

最近的項目需求需要使用新的字體,而且是在 所有地方 也就是說不管是普通的cell中的label,還是導航欄中的標題,都要使用設計新給出的字體。而新的字體包含在一個ttf的文件中。

乍一聽到是挺浩大的一個工程,如果我是一個笨蛋的話估計會去每一個顯示文字的界面,去修改相應的設置Font的方法,再稍微聰明一點可能在一個統一的地方編寫一個比如- (UIFont *)customFontWithSize:(CGFloat)size 的方法,然後在需要的地方進行使用。這樣的話呢,既浪費時間,又有可能會有遺漏的地方。

不過作爲一個碼(lan)工(ren) ,怎麼可能讓自己陷入那樣的人民戰爭的汪洋大海呢?所以我使用了蘋果提供的Category特性,來減少自己的工作量。

把大象放冰箱。。啊不不不,要實現category來自定義字體,分成幾步?且聽我來分解。

  • 步驟一:在XCode新建文件時選擇Category選項,並且新建關於UIFont的新Category,命名就叫UIFont+SGCustom吧。(SG沒有任何的意思,可以是你們工程自己的前綴,這裏的SG是“帥哥”的縮寫XD)
  • 步驟二:在新建立的Category的.m文件中,重寫系統的+(UIFont *)systemFontWithSize:(CGFloat)size方法

    相信你一定知道你的新字體的名稱,所以你應該按這個方法來重新這個方法

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize {

    return [UIFont fontWithName:@"YourFont" size:fontSize];
}

等等 ,有警告!你是程序員你還在乎警告? 哈哈,開玩笑,當然如果你覺得這個警告很煩人或者有警告潔癖的話可以使用這段宏來忽略該警告:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
  // 在這裏寫入剛纔那段代碼,或者你想忽略警告的代碼

#pragma clang diagnostic pop
  • 步驟三:重新運行你的程序,查看你所有的顯示文字的界面。這時候你應該發現大部分的界面已經替換爲你的新字體了。如果有一些地方還沒有的話,請看看這些地方在設置字體的時候是否使用了剛纔被重寫的那個方法

寫到這裏我覺得大多數人都已經知道怎麼弄了吧?等等,這位同學你說什麼?哦,你不知道怎麼引用ttf文件進工程啊?那個。。咳咳,好吧,我順便說一下怎麼把UI給出的新字體放進工程裏。

還是那個按照大象放冰箱的思路來吧

  • 步驟一:像是把圖片或音頻資源加入工程那樣將其放進工程中
  • 步驟二:在plist裏增加“Fonts provided by application”這個key ,並且增加item0,item0的值爲你加進來的那個文件的名稱。(這裏我想預警一下,一會我們要使用的字體的名稱可不一定是這個文件的名稱哦)
    如圖所示:
    這裏寫圖片描述
  • 步驟三:找到字體的名稱。如果你不知道新給出的字體的英文!英文!英文!重要的事情說三遍!英文名稱的話,你就要通過如下這段代碼進行尋找了。
for (NSString* family in [UIFont familyNames])
{
    NSLog(@"%@", family);

    for (NSString* name in [UIFont fontNamesForFamilyName: family])
    {
        NSLog(@"  %@", name);
    }
}

把所有的你的工程所支持的字體都打印出來,看哪個 更(bu)像(shun)是(yan) 新給出字體,那麼把它的名稱放到剛纔的那個方法中就可以啦!~

好了, 快去試試吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章