詳解iOS設定字型的三種方式

2022-09-21 09:00:12 字數 1755 閱讀 9932

有時候專案需要顯示一些非系統的字型達到一些ui的效果,目前設定字型有三種方式,預設方式、bundle方式,coretext方式。

1 預設方式

這種方式就是正常的字型設定方式

label.font = [uifont fontwithname:@」blazed」 size:42];

至於第乙個引數的名字,可以通過以下方法輸出所有字型名字列表

[uifont familynames]

只要名字列表中存在的,都可以用這種方式關聯到對應的字型上。

2 繫結自定義的字型包

其實第二種方式和第一種方式在**上是一樣的,依舊是通過名字設定字型

label = [uifont fontwithname:@」blazed」 size:42];

只是要想使用往上**的字型檔案,先將ugkihu字型檔案加到系統的字型目錄中。

具體操作如下:

1 **目標的字型檔案並新增到工程中,名字為fonttest.ttf

2 在info.plist中,新增 fonts provided by application 項, 開啟對應的陣列,可以設定多個字型,在item0中 輸入fontte程式設計客棧st.ttf。

這個時候再執行[uifont familynames],新加的字型就存在於列表中,那麼直接設定名字就可以設定上字型了。

3 通過coretext繫結字型

第二種方式基本基本就可以滿足大部分的需求,只有乙個問題,就是字型包大小不一定www.cppcns.com,幾十兆到幾百兆不等,隨著其他資源包一起打進ipa會讓包變得很大,尤其是有的業務需要很多的字型包,那麼肯定是需要動態網路**的,這個動態**的字型檔案目前蘋果開放的介面是無法動態新增配置資訊到info.plist的。這個時候就需要coretext介面動態繫結到記憶體中。

當然,這裡需要引入coretext框架

#import < coretext/coretext.h>

+(uifont*)dogetcustomfontwithpath:(nsstring*)path size:(cgfloat)size

// 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;}總結

本文標題: 詳解ios設定字型的三種方式

本文位址:

iOS設定圓角的三種方式

最簡單的一種,但是很影響效能,一般在正常的開發中使用很少.uiimageview imageview uiimageview alloc initwithframe cgrectmake 100,100,100,100 只需要設定layer層的兩個屬性 設定圓角 imageview.layer.co...

iOS設定圓角的三種方式

ios切圓角的方式 最簡單的一種,但是很影響效能,一般在正常的開發中使用很少.uiimageview imageview uiimageview alloc initwithframe cgrectmake 100,100,100,100 只需要設定layer層的兩個屬性 設定圓角 imagevie...

字型載入三種方式

這是一篇很簡短的文章,介紹了 ios 自定義字型載入的三種方式。之後直接使用即可 void staticload void dynamicload else self dynamicfontlabel font uifont fontwithname fontname size 50 cfrelea...