0

我想做一个像亚马逊 Kindle 应用程序一样的阅读器。具体来说,我想在段落中呈现一堆对齐的文本,每页一列,并让它像 Kindle 应用程序一样在页面之间滚动。

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

他们显然在使用 Core Text。他们是否使用分页滚动视图?这会导致大型书籍的内存问题吗?

4

2 回答 2

1

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

NSCollectionView 很酷的地方在于它的行为与 UITableView 完全一样,因此它非常节省内存,不在屏幕上的内容不会显示,如果要显示则加载。

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

于 2013-01-22T20:44:14.867 回答
1

我最终做了一些完全定制的东西。它由 3 个视图组成,aleft mainright视图。

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

如果用户点击或向右或向左拖动,视图控制器将呈现其中一个侧视图并让您拖动它。当您完成拖动或完成点击操作时,它会将页面动画放置到位,然后将主视图与您拖动的那个交换。

与使用 a 相比,此方法的优势在于UICollectionView,要以确定的方式计算应在给定页面上显示的确切内容非常昂贵,因为表格/集合视图需要。这种方式让我可以渲染任何章节的文本,并且可以懒洋洋地向后或向前移动,而无需立即布置整本书。

于 2013-02-05T16:06:54.243 回答