在创build一系列NSTextContainers时,如何根据文本内容指定容器中断?

我创build了一系列NSTextContainers来保存来自HTML资源的文本。 我能够将HTML添加到一个属性string,将其分配给NSTextStorage和NSLayoutManager,并创build一系列NSTextContainers来保存所有文本。

我的问题是,我想在文本中添加“分页符”,即停止填充此文本容器,并开始另一个…在文档中,我find了一些调用NSControlCharacterContainerBreakAction; 但我不清楚如何实施,或者即使是最好的方法。

下面的代码片段是我如何通过文本容器(在Swift中)构build的。

var myLayoutManager = NSLayoutManager() var myText:NSAttributedString = { let path = NSBundle.mainBundle().URLForResource("localfile", withExtension: "html") let opts = [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType] return NSMutableAttributedString(fileURL: path, options: nil, documentAttributes: nil, error: nil)! }() myTextStorage = NSTextStorage(attributedString: myText) myTextStorage.addLayoutManager(myLayoutManager) //Create all textContainers to hold text if myLayoutManager.textContainers.count == 0 { var range = NSMakeRange(0, 0) while(NSMaxRange(range) < myLayoutManager.numberOfGlyphs) { var myTextContainer = NSTextContainer(size: CGSizeMake(450, 580)) myLayoutManager.addTextContainer(myTextContainer) range = myLayoutManager.glyphRangeForTextContainer(myTextContainer) } } 

你可以在你的string中加上“Page Break”ASCII控制字符,布局pipe理器会处理它。

 let pageBreakString = String(UnicodeScalar(12)) 

参考: ASCII控制字符