在objective-c中快速加载滚动视图中的webview?

时间:2011-11-22 15:03:29

标签: iphone objective-c ios4 uiwebview uiscrollview

我有20个htmls,我正在webview中加载它。 但是,我正在创建3个webview放置在scrollview上并重用这些webview直到html计数完成。 我在

中加载html内容
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

滚动网页浏览时正在慢慢加载。我想快速加载这些网页视图。如何做到这一点。任何人都可以帮助我。谢谢。提前感谢。

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是在显示之前下载并缓存所有页面。

请参阅此答案以下载HTML网页并在本地编写。

https://stackoverflow.com/q/5607132/300972

创建一个包含对这些页面的引用的数组,然后将它们加载到UIWebView中的相应scrollViewDidEndDecelerating中。

更新

使用上面的链接,它看起来像这样。请注意,我没有测试过这个。

// NSArray *urls;
// NSMutableArray *filePaths;
- (void)viewDidLoad
{
    [super viewDidLoad];

    urls = [NSArray arrayWithObjects:@"http://www.url1.com", @"http://www.url2.com", @"http://www.url3.com", nil];

    for (int i=0; i<[urls count]; i++)
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *filePath = [NSString stringWithFormat:@"%@/%@.html", [paths objectAtIndex:0], [urls objectAtIndex:i]];   

        NSURL *url = [NSURL URLWithString:[urls objectAtIndex:i]];
        NSData *urlData = [NSData dataWithContentsOfURL:url];
        [urlData writeToFile:filePath atomically:YES];
    }
}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{
    // Do some calculation to find index of webpage, this depends on
    // the size of the scrollview and the size of the webview.
    int index = ...;

    NSString *filePath = [NSString stringWithFormat:@"%@/%@.html", [paths objectAtIndex:0], [urls objectAtIndex:i]];   
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];      
}