text kit 如何根据textview的字体大小进行分页

在开发一个iOS电子书阅读器,有一个textview显示电子书文本,我希望能根据textview的字体大小进行电子书分页,字体大时,页数增加,字体小时,页数减少。
关于分页我参考了网上的代码,写了以下代码:

 let layoutManager = NSLayoutManager()
    let cunchu:NSTextStorage=NSTextStorage(string:titleString as String);
    cunchu.addLayoutManager(layoutManager)
    var ranges: [NSRange] = []
    var i:Int=0
    var totalpages:Int=1000
    while true {
         let container=NSTextContainer(size: xianshi2.bounds.size)
         layoutManager.addTextContainer(container)
         let rang=layoutManager.glyphRange(for: container)
         if rang.length <= 0 {
                totalpages=i
                break
            }
            ranges.append(rang)
            i += 1
        }
        j=0
        while (jcunchufenduan=cunchu.attributedSubstring(from: ranges[j])
           stringfenduan[j]=cunchufenduan.string
           j += 1
        }
   func doubleTap1(){
        j=j+1
        xianshi2.text=stringfenduan[j]
     }

现在的问题是分页后每段的文本固定,当textview即xianshi2的字体变大时,有些文本被截断无法显示,字体变小时,textview有空行,初次接触text kit,对text kit的应用不熟,我想是不是上述代码中text kit在分页时有默认的字体,我希望根据xianshi2.font字体大小,来进行分页,不知要添加什么语句,请各位指点,谢谢!
textview的字体大小是事先手工设置的,上述代码是写在viewdidload方法里面,我期待在分页之前有类似layoutManager.font=xianshi2.font或者cunchu.font=xianshi2.font这样的语句,那么分页就按照这个设定的字体进行分页了,而不再使用默认字体进行分页,但不知语句该怎么写,请各位指点,谢谢!

https://ios.dovov.com/%E5%9C%A8ios%E4%B8%8A%E4%BD%BF%E7%94%A8textkit%E8%BF%9B%E8%A1%8C%E6%96%87%E6%9C%AC%E5%88%86%E9%A1%B5.html
https://juejin.cn/post/6844903742500765704

在Android中用textview实现简单的小说分页
https://blog.csdn.net/w0lker/article/details/124598569

在LinearLayout中加入TextVew,然后比较TextVew 和linearlayout 的高度

let textView = UITextView()
// 设置文本视图的文本和字体

let pageSize = CGSize(width: textView.frame.width, height: textView.frame.height)
let textSize = textView.sizeThatFits(pageSize)
let numberOfPages = ceil(textSize.height / pageSize.height)

布局管理器 AllowsNonContiguousLayout 的属性设置为 false。 这会导致重新计算文本更改的所有情况的布局。 如果将其设置为 true,则避免完全布局刷新(尤其是在大型文档的情况下)可能会使性能受益。 但是,设置为 AllowsNonContiguousLayout true 会阻止排除路径在某些情况下更新布局-例如,如果在运行时输入文本,则不会在设置路径之前返回尾随回车。

https://blog.csdn.net/fx1ts/article/details/52293977