当改变字体时基于页面的加载epub
我正在做像iBooks一样的电子书阅读器应用程序。 我已经成功读取.epub文件。 但我的问题是:
我必须添加字体大小增加和减less和字体更改function。 我必须调整页面当我增加和减小字体大小。 我怎样才能在页面中分割HTMLstring? 。
你可以看到两个图像。 在更改字体大小后,htmlstring会被分开,格式也会崩溃。
提前致谢
那么这真的是一个很难的问题
我有一个方法将HTML页面分为两部分:第一页和其余部分。 然后,您可以在“rest”上重复调用该方法来获取所有页面。
- 设置$ num_words = 100
- 从页面的第一个$ num_words单词=> $ first_page_html;
- 将$ first_page_html放入UIWebView并“渲染”它(请参阅下面的注释)。
- 检查UIWebView的高度。 合身吗? 如果是,则从algorithm返回。
- 如果单词不适合UIWebView,请执行$ num_words–;
- 否则,做$ num_words ++;
- GOTO 2
这是第一个应该以某种方式工作的algorithm。 但是,有优化的机会和隐藏的问题:
你应该做一些二进制search而不是线性search。 所以$ num_words不应该是100,99,98,97,96,…,62,而是100,80,60,70,65,64,63,62。询问webview会更快它大于或小于预期。 也就是说,如果网页视图的高度是30%,那么意味着您应该将其减less(1-1 /(1 + 30%))= 23%,所以您应该在第一个数字上乘以0.77步。
当文档中出现硬分页符时,您的函数应该考虑到这一点。
通过调用webView.scrollView.contentSize.height获得UIWebView的高度。 我认为你必须等待UIWebView完成渲染,然后才能检查高度。
如果您对HTML的结构有所了解,则可以使用UIWebView中的-stringByEvaluatingJavaScriptFromString:
方法来添加单个单词并查看所发生的情况。 这样web视图就不必一直重新渲染所有的东西。
注意:通过“渲染”我的意思是调用-loadHTMLString:baseURL:
然后等待-webViewDidFinishLoad:
委托方法被调用。
如果性能是一个问题,它可能会更快(用于设备)在JavaScript中以某种方式对此algorithm进行编码,但是我认为这会更困难。
最后我得到了答案,很简单。 在iOS 7中,您不需要为分页或任何逻辑编写JavaScript。
只需设置UIWebview属性。 这是我的代码。
self.webView.paginationMode = UIWebPaginationModeLeftToRight; self.webView.paginationBreakingMode = UIWebPaginationBreakingModePage; self.webView.scrollView.delegate = self; self.webView.scrollView.pagingEnabled = YES; self.webView.scrollView.alwaysBounceHorizontal = YES; self.webView.scrollView.alwaysBounceVertical = NO; self.webView.scrollView.bounces = YES;
这里是示例代码a: https : //github.com/kalpesh22m/Epub-Reader-With-Pegination
首先要增加字体大小,你需要给予字体大小。 在使用em之前,你需要给body的font-size:62.5%,div里面的元素给出1.2em的字体大小(这将会像12px一样)。 所以当你想增加Div的字体大小时,你只需要增加10%的字体大小。 而且你不需要为了调整页面而计算字符,如果你正在制作响应式书籍,这不是一个好习惯。 使用列属性closuresCSS,让CSS处理您的网页stream量。 请参阅下面的链接字体大小和stream动html结构
js小提琴
<a href="http://jsfiddle.net/hJ6Mj/4/">Js Fiddle</a>
还可以参阅“Chrome浏览器的jQuery”。 这会让你知道如何在浏览器上呈现EPUB文件