如果我有一个非常长的NSTextStorage,并且我知道NSTextContainer的CGSize,我如何计算文本的页数?对于这件事有没有一个标准的程序或者某种动态计算它的方法?我找不到一个好的教程,从原始文本与自定义字体(我需要绘制20-50页的文本)来制作一本像iBooks这样的书。
发布于 2016-03-20 20:24:44
我发现了一种使用TextKit的NSLayoutManager计算页面数量的好方法。创建NSTextContainers时只计算页数
var range = NSMakeRange(0, 0)
var containerIndex : UInt = 0
var pageIndex : UInt = 1
while(NSMaxRange(range) < layoutManager.numberOfGlyphs) {
let textViewRect = self.frameForViewAtIndex(containerIndex)
let containerSize = CGSizeMake(textViewRect.size.width, textViewRect.size.height - 16)
let textContainer = NSTextContainer(size: containerSize)
layoutManager.addTextContainer(textContainer)
let textView = UITextView(frame: textViewRect, textContainer: textContainer)
self.addSubview(textView)
range = (layoutManager.glyphRangeForTextContainer(textContainer))
containerIndex++;
if containerIndex%columnCount == 0 { pageIndex++ }
}columnCount是使用多列布局时的列数
frameForViewAtIndex在scrollView中返回当前textView的CGRect
https://stackoverflow.com/questions/35687802
复制相似问题