在开发一个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 (j<totalpages){
let cunchufenduan=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 的字体大小进行电子书分页,您可以在每次更改 textview 的字体大小后重新计算分页信息。例如,您可以在每次更改字体大小时,重新计算页面数量,并将这些页面的内容存储在数组中。然后,您可以在用户双击 textview 时,从数组中加载下一页的内容。
// 在更改 textview 的字体大小时,重新计算分页信息
func updatePageInfo() {
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 (j < totalpages) {
let cunchufenduan = cunchu.attributedSubstring(from: ranges[j])
stringfenduan[j] = cunchufenduan.string
j += 1
}
}
// 在用户双击 textview 时,从数组中加载下一页的内容
func doubleTap1(){
j=j+1
xianshi2.text=stringfenduan[j]
}
此时,在用户双击 textview 时,就可以加载下一页的内容了。
在Android中用textview实现简单的小说分页
如有帮助,望采纳
https://blog.csdn.net/w0lker/article/details/124598569
textview的字体是事先手工设置的,上述代码是写在viewdidload方法里面,我期待在分页之前有类似layoutManager.font=xianshi2.font或者cunchu.font=xianshi2.font这样的语句,那么分页就按照这个设定的字体进行分页了,而不再使用默认字体进行分页,但不知语句该怎么写,我会提高回答金额,请高手们指点,谢谢!