IPhone SDK: проблема с ленивой загрузкой scrollView картинок - PullRequest
0 голосов
/ 26 июля 2011

Мое приложение включает scrollView, содержащий imageViews, выбранные пользователем через модифицированный ELCImagePicker.Выбранные изображения, как правило, представляют собой фотографии высокого качества на 5 МБ +, и пользователь обычно выбирает по меньшей мере дюжину изображений одновременно.В настоящее время я загружаю фотографии, как показано ниже:

   -(void)loadViewWithPage: (int)page
{
    if (page > 0 && page < [Album count]) {
        [scrollView addSubview:[Album objectAtIndex:page]];
    }
}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)sender
{
    CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth) / pageWidth) + 1;

    [self loadViewWithPage:page + 1];
}

Где в альбоме хранятся фотографии в виде изображений.

Это прекрасно работает, когда пользователь не пытается сломать приложение и прокручивать фотографии по одной, но с треском проваливается, когда он / она пытается прокрутить весь выбор.Страницы остаются пустыми, если пользователь не останавливается после каждой фотографии.Я попытался использовать scrollViewDidScroll аля образец PageControl, но так как фотографии все огромные, задержка очень заметна.

Есть ли способ плавно загрузить фотографии?

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

, если вы используете scrollViewDidEndDecelerating, оно сработает только тогда, когда просмотр прокрутки прекратится. Я бы использовал scrollViewDidScroll для этого. (это также используется в их примерах)

0 голосов
/ 29 июля 2011

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

Во время загрузки изображения я отображал UIActivityView

Надеюсь, это поможет.

...