天天看點

iOS文本布局探讨之二——關于TextKit架構中的字型描述

        uifont是ios開發中處理文本字型的類,關于uifont的相關内容,以前的一篇部落格有詳細介紹,本片部落客要介紹關于動态字型的應用與字型描述類nsfontdescriptor的應用。

        所謂動态字型,是指在應用使用中,使用者可以動态調整字型的風格字号等。在ios7及之後的ios系統版本,textkit架構中提供了一個新的類uifontdescriptor。簡單了解,uifontdescriptor類是專門用來描述字型的,其中提供了許多方法可以直接建立出某種字型,也可以對字型進行設定和調整。動态字型也由這個類來建立。

        在ios7之後,系統增加了動态字型的功能,當使用者在系統設定中修改字型的屬性或者字号時,不僅會影響系統應用的字型,第三方應用的字型也可以進行相應調整。系統設定字型界面如下:

iOS文本布局探讨之二——關于TextKit架構中的字型描述

使用uifontdescriptor類中的如下方法可以建立動态字型:

uifont類中的如下方法可以将字型描述類轉換成uifont字型:

系統定義了一組動态字型的風格字元創常量,開發者可以根據需求選用:

        uifontdescriptor類可以直接通過字型名稱來進行建立:

cgaffinetransform是一個結構體,其用于文本的控件變換十分強大,在coreanimation架構中有catransform3d這個結構體,cgaffinetransform與其用法十分相似,使其它可以完成文字的形變,旋轉等。示例如下:

效果如下:

iOS文本布局探讨之二——關于TextKit架構中的字型描述

開發者也可以通過配置地點的方式來建立uifontdescriptor對象:

字典中可以配置的鍵值如下:

關于字型的特征藐視,即上面uifontdescriptortraitsattribute鍵值所配置的字典,這個字典中可以設定的鍵值如下:

關于上面uifontsymbolictrait鍵值,定義在uifontdescriptorsymbolictraits枚舉中,如下:

繼續閱讀