【问题标题】:UIPageViewController/TextKit count number of pagesUIPageViewController/TextKit 统计页数
【发布时间】:2016-02-28 20:22:55
【问题描述】:

如果我有一个很长的 NSTextStorage 并且我知道 NSTextContainer 的 CGSize,我如何计算文本的页数? 这件事有标准程序或某种动态计算的方法吗? 我找不到一个很好的教程来使用自定义字体从原始文本制作 iBooks 之类的书(我需要绘制 20-50 页的文本)。

【问题讨论】:

    标签: ios swift uipageviewcontroller textkit


    【解决方案1】:

    我找到了一种使用 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 返回滚动视图中当前 textView 的 CGRect

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      相关资源
      最近更新 更多