0

我的应用程序包含一个滚动视图,其中包含用户通过修改后的 ELCImagePicker 选择的图像视图。选择的图片通常是 5 MB+ 的高质量照片,用户通常一次选择至少十几张图片。目前,我正在加载如下照片:

   -(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];
}

其中相册是将照片存储为 imageViews 的位置。

当用户不想破坏应用程序并一次滚动浏览一张照片时,这非常有用,但是当他/她尝试滚动浏览整个选择时会惨遭失败。除非用户在每张照片后停下来,否则页面是空白的。我尝试使用 scrollViewDidScroll ala PageControl 示例,但由于照片都很大,因此滞后非常明显。

有什么方法可以顺利加载照片吗?

4

2 回答 2

0

我遇到了类似的情况,并通过创建 NSOperation 的自定义子类来处理它,该子类会将图像加载到单独的线程中,然后通过调用主线程上的方法来显示它们。

在加载图像时,我显示了一个 UIActivityView

希望有帮助。

于 2011-07-29T12:36:37.153 回答
0

if you use scrollViewDidEndDecelerating it will only fire when the scrollview stops. I would use scrollViewDidScroll for that. (it's also used in their examples)

于 2011-07-29T12:44:01.587 回答