UIWebview和powerpoint分隔符问题

时间:2012-02-19 23:21:07

标签: ios uiwebview uiscrollview powerpoint

理想情况下,我想将我的ppt和pdf文档加载到没有边框或分隔符的webview中。我不相信这是可能的。所以这个问题可以优雅地处理ppt文档中的分隔符。

我正在尝试滚动ppt进行自己的分页。我已经尝试使用webview的scrollview的内置分页,但这不起作用。计算分频器高度很困难,使用这种方法总是会出现分频器。

目前我正在测试31页幻灯片。偶尔会有一些分隔符显示在webview的顶部。 (在15日,24日,25日和26日)

pptx的纵横比为16x9。我的webview是1024x576,我假设这是webview中幻灯片的大小。

我按如下方式计算分频器大小。

加载时文档的高度为18069 18069/576~31.369这意味着共有31页 我按如下方式计算分隔器占用的空间量:18069-(31 * 576)= 213 然后213/30 = 7.1是分频器高度。

我对分隔符高度为十进制非常困惑。此外,我很困惑为什么在31页的例子中,第15,24,25,26页是那些没有正确对齐的页面。

对于目前为止针对特定大小的问题似乎很抱歉,但这是我的代码,用于处理动态大小文档的向下翻页操作。

- (void)handlePptSwipeUp:(UISwipeGestureRecognizer *)sender
{
  //swipe up means scroll down
  CGSize pptSize = pptWebView.scrollView.contentSize;
  float y = pptSize.height;
  int pages = y/pptWebView.frame.size.height;
  float diff = pptSize.height - pages*pptWebView.frame.size.height;
  float divider = diff/(pages-1);

  CGPoint cOffset = pptWebView.scrollView.contentOffset;
  float temp = pptScrollOffset + pptWebView.frame.size.height+divider;
  if (temp+pptWebView.frame.size.height <= pptWebView.scrollView.contentSize.height)  {
    pptScrollOffset = temp;
  }
  CGRect visibleRect = CGRectMake(cOffset.x, pptScrollOffset, pptWebView.frame.size.width, pptWebView.frame.size.height);
  [pptWebView.scrollView scrollRectToVisible:visibleRect animated:YES];

  NSLog(@"content width %f\ncontent height %f\npages %d\ndiff %f\ndivider %f\npptScrollOffset %f",pptWebView.scrollView.contentSize.width,y,pages,diff,divider,pptScrollOffset);
}

以下是滚动一页后的输出示例

content width 1024.000000
content height 18069.000000
pages 31
diff 213.000000
divider 7.100000
pptScrollOffset 583.099976

1 个答案:

答案 0 :(得分:0)

我在其他页面上读过类似的内容。

我现在找不到页面了......所以,我只是把代码放到幻灯片的大小。

这是代码:

NSString *w=[_webView stringByEvaluatingJavaScriptFromString:@"function x(){var rtn='';for (var i=1;i<document.all.length;i++){var a=document.all[i];if (((a.clientWidth>0)&&(a.clientHeight>0))&&(a.scrollHeight.toString()==a.offsetHeight.toString())&&(a.offsetHeight.toString()==a.clientHeight.toString())){return ''+a.offsetWidth; }}return rtn;};x();"];
NSString *h=[_webView stringByEvaluatingJavaScriptFromString:@"function x(){var rtn='';for (var i=1;i<document.all.length;i++){var a=document.all[i];if (((a.clientWidth>0)&&(a.clientHeight>0))&&(a.scrollHeight.toString()==a.offsetHeight.toString())&&(a.offsetHeight.toString()==a.clientHeight.toString())){return ''+a.offsetHeight; }}return rtn;};x();"];

然后滚动webView

NSString* javascript = [NSString stringWithFormat:@"window.scrollBy(0, %@);", h];   
[_webView stringByEvaluatingJavaScriptFromString:javascript];

此示例未计算边框。把它们放进去,我觉得它会很完美~~