1.对text排版的framework
,使用TextKit.
显示单个字符也有frame,bounds,position,transform等属性的类,我们可以用CATextLayer
.
文本布局,我们用TextKit,它里面主要有三个类,NSTextStorage
, NSLayoutManager
, NSContainer
.
NSTextStorage: NSMutableAttributedString 的子类,持有文字内容,当字符发生改变时,通知 NSLayoutManager 对象
NSLayoutManager: 我们的男主角,从 NSTextStorage 里获取文字内容后,转换成对应的 glyph,根据 NSTextContainer 的 visible Region 显示 glyph。
NSContainer: 确定一个 region 来放置 text。这个 region 被 NSLayoutManager 用来决定哪里可以 break lines
UILabel中没有直接的这个三个属性,现在为止.
当TextStorage
的文本内容改变的时候,会触发一个通知send textLayoutManager
,以便重新布局排版。所以,我们应该在排版布局之后再来为每一个字符创建设置一个CATextLayer
, 并且设置响应的frame, 以便正确地显示文本内容。
Core Animation
基于一个假说,就是屏幕上的任何东西都可以 (或者可能) 做动画