当前位置:  开发笔记 > 编程语言 > 正文

在iPad上呈现长文档

如何解决《在iPad上呈现长文档》经验,为你挑选了0个好方法。

我正在为iPad上的自定义文档格式实现具有突出显示/注释功能的文档查看器.这些文件有点长(100到200页,如果在纸上打印),我很难找到正确的方法.以下是要求:

1)基本的富文本样式:控制左/右边距.控制字体名称,大小,前景/背景颜色和行间距.大胆,斜体,下划线等

2)选择和突出显示任意文本区域(不限于段落边界,如Safari/UIWebView).

3)自定义剪切/复制/粘贴弹出窗口(UIMenuController)这是应用程序的基本要求之一.

我的第一个实现是基于UIWebView.我只是将文档渲染为带有CSS的HTML文本样式.但我无法获得我想要的那种文本选择行为(跨越段落边界),并且无法从UIWebView中自定义UIMenuController.

所以我开始研究javascript方法,使用JQuery伪装设备文本选择行为来捕获触摸事件并动态修改DOM以更改所选文本区域的背景颜色.我构建了一个假的UIMenuController控件作为隐藏的DIV,定位它并在有活动选择区域时取消隐藏它.

不是太寒酸.

主要问题是它是SLOOOOOOOW.滚动浏览文档非常快捷,但动态更改DOM并不是很顺畅.另外,我无法弄清楚如何重新创建放大镜放大镜,因此我的假文本选择GUI与本机实现看起来并不完全相同.此外,我还没有实现javascript层和objective-c层之间的通信桥梁(应用程序的其余部分存在),但它正在形成一个巨大的麻烦.

所以我一直在关注CoreText,但网上有很少的例子.我用这个简单的小演示花了一点时间:

http://github.com/jonasschnelli/I7CoreTextExample/

它展示了如何使用CoreText将NSAttributedText字符串绘制到UIView中.但它有自己的问题:它没有实现文本选择行为,并且它没有呈现UIMenuController,所以我不知道如何实现这一点.而且,更重要的是,它试图一次性绘制整个文档,对于长文档而言会显着降低性能.我的文档可以包含数千个段落,并且一次只能在屏幕上显示不到1%的文档.

从好的方面来说,这些文档已包含精确的格式信息.我知道每行文本的确切页面位置,所以我不需要布局引擎.

有谁知道如何使用CoreText实现这种视图?我理解一个完整的实现对于这样的问题来说是过度的,但我正在寻找一个有一些基本要求的好的CoreText示例:

1)精确的布局和格式控制(使用我已经计算过的格式化指标和文本样式).

2)任意选择文本.

3)UIMenuController的定制.

4)为屏幕外对象有效地回收资源.

当文本元素滚动到屏幕外时,我很乐意实现自己的回收,但是不需要重新实现UIScrollView吗?

我对iPhone开发是全新的,并且仍然习惯于Objective-C,但我已经使用其他语言(Java,C#,flex/actionscript等)十多年了,所以我对我有能力完成工作,只要我对iPhone SDK有更好的感觉,并为这样的东西提供常见的编码模式.它只是我,还是SDK文档真的很糟糕?

无论如何,谢谢你的帮助!

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有