除了上述3个类之外,TextKit框架中的NSLayoutManager类作为协调者来进行布局操作。 上述关系如下图所示: ? ,在NSLayoutManager中,需要进行NSTextContainer的定义,定义多了NSTextContainer对象则会将文本进行分页。 An NSLayoutManager uses NSTextContainer to determine where to break lines, lay out portions of text, 五、关于NSLayoutManager 顾名思义,NSLayoutManager专门负责对文本的布局渲染,简单理解,其从NSTextStorage从拿去展示的内容,将去处理后布局到NSTextContainer NSLayoutManager与NSTextContainer的关系为一对多,放入NSLayoutManager中的NSTextContainer会以有序数组的形式进行管理,在内容布局时,超出第一个NSTextContainer
二.Text Kit中重要的一些对象 image.jpg 图中主要表现NSTextContainer, NSLayoutManager, NSTextStorage之间的关系。 Layout manager对应着NSLayoutManager类。 另外,当NSTextStorage中的字符或属性发生了改变,会通知NSLayoutManager,进而做到文本内容的显示更新。 然后通过一个管理者(NSLayoutManager)把文字显示在容器中,形成一个我们看到的UILable。
②、创建有占位视图的UITextView,主要涉及NSTextStorage、NSLayoutManager、NSTextContainer、UIBezierPath几个类,主要代码如下: NSString title]; [textStorage addAttributes:attributeDictionary range:NSMakeRange (0, [title length])]; //布局管理 NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; [textStorage addLayoutManager:layoutManager]; //文本容器
thirdTextView.isScrollEnabled = false; 25 self.view.addSubview(thirdTextView) 26 let layoutManager = NSLayoutManager
3、NSLayoutManager NSLayoutManager作为文本控件中的排版引擎接收保存的文本并在屏幕上渲染出来。
以下三个属性text kit的常用属性: //text kit工具 NSTextContainer *_textContainer; NSLayoutManager *_layoutManager
iOS 也是类似的,创建了一个 UIView 并调用 NSLayoutManager 创建文本。