2012-02-19 36 views
0

理想情況下,我想將我的ppt和pdf文檔加載到無邊框或分隔符的webview中。我不相信這是可能的。所以這個問題能夠很好地處理ppt文檔中的分隔符。UIWebview和powerpoint分隔器問題

我正試圖滾動通過一個PPT使我自己的分頁。我已經嘗試使用內置分頁的webview的滾動視圖,但沒有奏效。使用這種方法計算分頻器高度並且分頻器總是存在是很困難的。

目前我正在測試一個31頁的幻燈片。偶爾會有一些divider顯示在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 
+0

這可能會以失敗或複雜的一團糟結束。 UIWebView具有極其複雜的視圖層次結構和底層繪圖方法。我可能會購買不使用UIWebView的PowerPoint演示文稿。 – CodaFi 2012-02-19 23:44:36

回答

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();"]; 

然後滾動web視圖

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

該樣品沒有指望的邊界。只要把它們放進去,我想它會很完美~~