如何使读者像点燃应用程序?

时间:2013-01-22 19:13:55

标签: ios core-text

我想让一个像亚马逊的Kindle应用程序一样的读者。具体来说,我想在段落中展示一堆合理的文本,每页一列,并让它像Kindle应用程序一样在页面之间滚动。

假设我有一个简单格式的文本,如每章的文本文件,甚至是每章内存中硬编码的字符串。

他们显然正在使用Core Text。他们使用分页滚动视图吗?这会导致大书的记忆问题吗?

2 个答案:

答案 0 :(得分:1)

我最初的想法是他们使用UITextView来显示大量文本,这种视图允许你添加边距,填充,文本,对于iOS 6你可以使用类似NSParagraphStyle的东西来为文本添加样式,简单的方法是在UIScrollView中的不同UITextViews中创建一个非常长的文本,这将给你一个很好的结果,但如果内存是一个问题,iOS版本不是一个问题,我建议使用UICollectionViews,你可以使每个页面都有一个“单元格”,然后编写一些自定义布局,这样当用户滚动书籍时,您实际上只需实例化用​​户在某个时刻使用的页面

关于NSCollectionView的一个很酷的事情是它的行为与UITableView完全相同,所以它的内存效率非常高,屏幕上没有显示的东西不会显示,如果它会被显示,那么它就会被加载。

希望这可以让你对此事有所了解。

答案 1 :(得分:1)

我最终制作了完全自定义的东西。它包含3个视图,left mainright视图。

视图控制器使用Core Text在main视图上呈现文本,并计算当前章节中每个页面的文本框大小(以及页数)。

如果用户向右或向左轻击或拖动,视图控制器将渲染其中一个侧视图并让您将其拖动。完成拖动或完成点按操作后,它会将页面设置为动画,然后将主视图与您拖动的视图交换。

这种方法优于使用UICollectionView的优点是,以表格/集合视图需要的方式,以确定的方式计算应该在给定页面上显示的确切内容是非常昂贵的。这种方式允许我渲染任何章节的文本,并且懒惰地前进或后退而不会立即整理整本书。