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中对此算法进行编码可能会更快(对于设备而言),但我认为这会更难.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...