天天看点

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枚举中,如下:

继续阅读