我正在做电子书阅读器应用程序,如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 举报,一经查实,本站将立刻删除。