我想让阅读器的行为像亚马逊的Kindle应用程序。具体而言,我想在段落中呈现一堆有理的文字,每页一列,并让它像Kindle应用一样在页面之间滚动。如何让阅读器像kindle应用程序?
我们假设我有简单格式的文本,如每章的文本文件,甚至是每章内存中硬编码的字符串。
他们显然使用核心文本。他们是否使用分页滚动视图?会遇到大型书籍的内存问题吗?
我想让阅读器的行为像亚马逊的Kindle应用程序。具体而言,我想在段落中呈现一堆有理的文字,每页一列,并让它像Kindle应用一样在页面之间滚动。如何让阅读器像kindle应用程序?
我们假设我有简单格式的文本,如每章的文本文件,甚至是每章内存中硬编码的字符串。
他们显然使用核心文本。他们是否使用分页滚动视图?会遇到大型书籍的内存问题吗?
我最终做出了一些完全自定义的东西。它由3个视图组成,left
main
和right
视图。
视图控制器使用核心文本呈现main
视图上的文本,并计算当前章节中每个页面的文本框的大小(以及页数)。
如果用户点击或拖动右侧或左侧,视图控制器将呈现其中一个侧面视图并让您拖动它。当您完成拖动或完成点按操作时,会将页面动画化,然后使用拖动的主视图交换主视图。
与使用UICollectionView
相比,此方法的优点在于,以表格/集合视图所需的方式计算应以确定方式显示在给定页面上的确切内容,这非常昂贵。通过这种方式,我可以呈现任何章节的内容,并且可以一边放下整本书一边懒懒地回头或前进。
我最初的想法是,他们使用UITextView来显示大量的文本,这种类型的视图允许您添加边距,填充,文本和iOS 6您可以使用像NSParagraphStyle的东西给样式的文本,简单的方法是在UIScrollView中的不同UITextView中创建一个非常长的文本,这会给你一个很好的结果,但如果内存是一个问题,并且iOS版本不是问题,我建议使用UICollectionViews,你可以使每个页面为“单元格”,然后编写一些自定义布局,以便当用户滚动书本时,您实际上可以在某个时刻立即使用用户所使用的页面
NSCollectionView的酷炫之处在于它的行为完全正确就像一个UITableView那样它的内存效率非常高,不显示在屏幕上的东西不会显示,并且如果它将被显示,那么它将被加载。
希望这可以给你一些关于此事的见解。