UIWebView显示预先加载的页面

时间:2013-02-07 10:22:57

标签: ios objective-c uiwebview

在我的应用程序中,Web视图显示在表视图的每个单元格内。为了增加响应,我们决定将网页保存为图像。所以我创建了一个不可见的Web视图,并逐个加载每个页面并在

上创建了页面的图像
- (void)webViewDidFinishLoad:(UIWebView *)webView

创建图像,但偶数图像丢失,奇数图像创建两次。那就是如果我创建四个图像说image1,image2,image3,image4。第一个和第二个图像是相同的image2将丢失,然后第三个和第四个相同,image4将丢失。

有谁知道发生了什么?我怎样才能获得所有图像?

编辑:保存图片的代码

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    CGSize pageSize = webView.frame.size;
    UIGraphicsBeginImageContext(pageSize);

    CGContextRef resizedContext = UIGraphicsGetCurrentContext();
    [[webView layer] renderInContext:resizedContext];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();
    NSData* imageData = UIImageJPEGRepresentation(image, 1.0);

    NSString  * filName;

        filName=[NSString stringWithFormat:@"%@_Potrait_%d.jpg",[currentSctionItem. titleName stringByReplacingOccurrencesOfString:@" " withString:@"_"],fileSavingAtIndex];

    NSString * filePath = [documentsDir stringByAppendingPathComponent:filName];
    [imageData writeToFile:filePath atomically:NO];
    NSLog(@"File created At path:%@",filePath);

    fileSavingAtIndex++;


        if (fileSavingAtIndex>=currentSctionItem.numberOfPagesLandscape) {
           //stop    
        }
        else{
            [webView loadHTMLString:[currentSctionItem potaraitHtmlAtThePage:fileSavingAtIndex] baseURL:baseURL]; 
        }

1 个答案:

答案 0 :(得分:0)

我通过为每个页面加载创建一个新的Web视图来修复它。这不是正确的方法,但现在可行了

if (fileSavingAtIndex>=currentSctionItem.numberOfPagesLandscape) {

            }
            else{
                UIWebView * webVw =[[UIWebView alloc] initWithFrame:PotraitwebViewFrame];
                 webVw.delegate=self;
                [webVw loadHTMLString:[currentSctionItem potaraitHtmlAtThePage:fileSavingAtIndex] baseURL:baseURL];
            }