微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 更改字体时基于页面的加载epub

我正在做电子书阅读器应用程序,如iBooks.我成功读取了一个.epub文件.但我的问题是: –

我必须添加字体大小增加和减少和字体更改功能.当我增加和减少字体大小时,我必须调整页面.如何在页面中拆分HTML字符串? .

你可以在两个图像中看到.更改字体大小后,html字符串将分离,格式化将被折叠.

提前致谢

解决方法:

嗯,这真是一个难题……

我有一个方法可以将HTML页面分成两部分:第一页和其他部分.然后,您可以在“休息”上重复调用方法获取所有页面.

>设置$num_words = 100
>从页面中取出第一个$num_words字样=> $first_page_html;
>将$first_page_html放入UIWebView并“渲染”它(参见下面的注释).
>检查UIWebView的高度.合身吗?如果是,则从算法返回.
>如果单词不适合UIWebView,请执行$num_words–;
>否则,请执行$num_words;
> GOTO 2

这是第一个应该以某种方式工作的算法.但是,存在优化机会和隐藏问题:

您可能应该执行二进制搜索而不是线性搜索.所以$num_words不应该是100,99,98,97,96,…,62,而是100,80,60,70,65,64,63,62.问webview怎么会更快它比预期更大或更小.即如果webview的高度超过30%,则意味着你应该将它减少(1-1 /(1 30%))= 23%,所以你应该在第一步中将字数乘以0.77.

当文档中存在硬分页符时,您的功能应考虑到这一点.

通过调用webView.scrollView.contentSize.height获得UIWebView的高度.我认为你必须等待UIWebView完成渲染才能检查高度.

如果您对HTML的结构有了更多了解,您可以使用UIWebView中的-stringByEvaluatingJavaScriptFromString:方法添加单个单词并查看会发生什么.这样webview就不必一直重新渲染所有内容.

注意:通过“呈现”我的意思是调用-loadHTMLString:baseURL:然后等待-webViewDidFinishLoad:委托方法调用.

如果性能是个问题,那么以某种方式在Javascript中对此算法进行编码可能会更快(对于设备而言),但我认为这会更难.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐