我发现一些iphone图书应用程序有这样的功能:
一页显示一页文字而不滚动。该文本可以通过换行符和缩进符合整个屏幕。
我很好奇如何实现这一点。我怎样才能确定适合屏幕的文本长度。而且,考虑到整篇文章,我可以计算出页数。
如果在iPhone(运行时?)上无法做到这一点,那么在将文本存储到应用程序之前是否可以处理文本?我的意思是我计算了我需要多少页(如何分割原始文本),可能是每页有多少行。
答案 0 :(得分:0)
我认为这就是你要找的东西
iPhone SDK: How do you measure the width and height of a string using Quartz?
接受的答案提供了可以在NSString上调用以计算大小的方法
答案 1 :(得分:0)
我为TouchTomes的书做的是有两个iPhone应用程序。一个是出现在App Store上的读者。另一个是渲染器,它计算了每个页面上可以放置的内容,只需要在模拟器中运行即可创建一个读者可以使用的书籍数据库。
它会抛出一堆文字,比如100个单词,看看是否溢出或下溢。如果它下溢,则添加更多文本(比如说20个单词),它将进行二进制搜索,直到找到确切的文本数量。然后它存储在SQLite DB中,例如“第12页显示单词100-228”。该应用程序将针对每种字体进行此操作。另一个表保存了各行中的所有单词(!)。优化步骤会将该表格缩小,组合始终出现在同一页面上的单词,无论使用什么字体。
我使用了Webkit显示,因此该书可能包含HTML格式。现在这真的使页面分解变得复杂(例如,不得不在页面之间保持斜体),但它让我在文本中包含了一些更好的格式。
然后读者应用程序几乎没有什么可以显示页面;从页面id中查找该页面上的单词范围,然后将该文本放入webkit视图中。用户可以非常快速地在整本书的页面之间跳转,所有的硬CPU工作都已经由渲染应用程序完成。