我的应用程序涉及一个scrollView,其中包含用户通过修改后的ELCImagePicker选择的imageViews。所选图片通常是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示例,但由于照片都非常大,因此滞后非常明显。
有没有办法顺利加载照片?
答案 0 :(得分:0)
我遇到了类似的情况并通过创建NSOperation的自定义子类来处理它,它会将图像加载到一个单独的线程中,然后通过调用主线程上的方法来显示它们。
当图像加载时,我显示了一个UIActivityView
希望有所帮助。
答案 1 :(得分:0)
如果您使用scrollViewDidEndDecelerating
,它只会在滚动视图停止时触发。我会使用scrollViewDidScroll
。 (它也用在他们的例子中)