1)基本的富文本样式:控制左/右边距.控制字体名称,大小,前景/背景颜色和行间距.大胆,斜体,下划线等
2)选择和突出显示任意文本区域(不限于段落边界,如Safari / UIWebVIEw).
3)自定义剪切/复制/粘贴d出窗口(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文档真的很糟糕?
无论如何,谢谢你的帮助!
解决方法 您的文档是否具有除每个段落之外的任何语义组件?如果您已经有一些部分或页面的概念,我建议您将每个部分或页面渲染为独立的表格单元格.创建一个让您忘记实际正在查看UItableVIEw的表格单元非常简单.你需要做的只是覆盖drawRect:和setSelected:和setHighlighted:和tah dah!除非您需要,否则不再使用细胞分裂器.此外,您可以使用tablevIEw作为基础来做一些漂亮的事情.如果您在UItableVIEw中定义了部分,那么您可以使用一个漂亮的标题,在您翻阅文档时滚动.您可以做的另一件事是添加“跳转到部分”栏/书签菜单,这样您就不必跨部分边界提供选择.大规模复制粘贴块在系统上也会非常痛苦.此外,如果您经历了提供此内容的麻烦,您可能不希望让某人一次性复制所有内容太容易…(如果没有更多细节,请不要遵循这一思路).
如果您确实想要提供复制粘贴选项,则可以向每个逻辑页面或部分添加按钮,以便用户方便地立即选择和复制整个部分. (也许引用相关?)
我建议您在SDK文档中查找UItableVIEwCell UItableVIEwDelegate和UItableVIEwDataSource,因为如果您选择使用此建议,这些页面将非常有用.
总结以上是内存溢出为你收集整理的iphone – 在iPad上渲染长文档全部内容,希望文章能够帮你解决iphone – 在iPad上渲染长文档所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)