gpt4 book ai didi

ios - 创建一系列 NSTextContainer 时,如何根据文本内容指定容器中断?

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:50 26 4
gpt4 key购买 nike

我正在创建一系列 NSTextContainer 来保存来自 HTML 资源的文本。我能够将 HTML 添加到属性字符串,将其分配给 NSTextStorage 和 NSLayoutManager,并创建一系列 NSTextContainer 来保存所有文本。

我的问题是,我想在文本中添加“分页符”,即停止填充此文本容器并开始另一个……在文档中,我发现了一个叫做 NSControlCharacterContainerBreakAction 的东西;但我不清楚如何实现它,或者这是否是最好的方法。

下面的代码片段是我目前通过文本容器构建的方式(在 Swift 中)。

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)
}
}

最佳答案

您只需将“Page Break”ASCII 控制字符放入您的字符串中,布局管理器就会处理它。

let pageBreakString = String(UnicodeScalar(12))

引用:ASCII Control Character

关于ios - 创建一系列 NSTextContainer 时,如何根据文本内容指定容器中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27970541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com