быстро загружать веб-просмотры в scrollview в target-c? - PullRequest
0 голосов
/ 22 ноября 2011

У меня 20 htmls, и я загружаю его в веб-просмотр. Но я создаю 3 веб-просмотра, помещая их в scrollview и повторно использую эти веб-просмотры, пока не закончится отсчет html. Я загружаю html контент в

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

и при прокрутке веб-просмотры загружаются медленно. Я хочу быстро загрузить эти веб-просмотры. Как это сделать. Кто-нибудь может мне помочь. Заранее спасибо.

1 Ответ

0 голосов
/ 22 ноября 2011

Одним из возможных решений было бы загрузить и кэшировать все страницы перед отображением.

См. Этот ответ для загрузки веб-страниц 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]]];      
}
...