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
基于一個假說,就是屏幕上的任何東西都可以 (或者可能) 做動畫