2015-04-17 81 views
0

我有這個應用程序,它需要存儲本地webview中顯示的圖像,並在同一個webview中再次顯示那些存儲的圖像。如何顯示保存在本地HTML文檔目錄中的圖像? iOS

這是我到目前爲止已經得到了...

// After download button clicked... Store image from URL locally 
    NSURL *url = [NSURL URLWithString:myURL]; 
    NSData *urlData = [NSData dataWithContentsOfURL:url]; 
    if (urlData) 
    { 
     NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 

     NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.png"]; 
     [urlData writeToFile:filePath atomically:YES]; 
    } 

    // Get image path from Documents Directory 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"filename.png"]; 

    // Display local html page     
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"revistasPhotoswipe" ofType:@"html" inDirectory:@"www"]]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [_webView loadRequest:requestObj]; 

,而在HTML文件中有隻是一個標籤來顯示圖像

<html> 
    <head></head> 
    <body><img src='filename.png' /></body> 
    </html> 

這是溝通的文件的正確方法Dir,使用App Bundle和HTML文件使其工作?另一種方法?

回答

0

您不能使用<body><img src='filename.png' /></body>,因爲它引用了不存在的本地服務器上的對象。你有兩個選擇:

1的Javascript

一毫秒後的頁面加載你應該告訴你的WebView來評估JavaScript函數。 document["pictureIdFromProgam"].src = searchPic.src;以及聲明與<img src='throw.imgNotSet' id='pictureIdFromProgam'/>

2.字符串Manipulatoin

另一個(較不理想,但更快的)圖像元素的選擇是已經HTML文件編碼到一個NSString並通過使用插入在img鏈路任一取代或%@小號

插入:

[NSString stringWithFormat:@"<html><blah blah blah/><img src=%@/>",imagePathAsString];

,然後你將能夠告訴你的webview加載包含更新的web內容的nsstring。

+0

我最終將HTML文件存儲在Documents目錄中,以便能夠對存儲在同一目錄中的圖像使用相對引用,而不是將HTML文件保留在Main Bundle上。感謝你的回答,給了我一些想法。 – karenms

相關問題