0

私のアプリには、変更されたELCImagePickerを介してユーザーが選択したimageViewsを含むscrollViewが含まれています。選択される写真は通常、5 MB以上の高品質の写真であり、ユーザーは通常、一度に少なくとも12枚の写真を選択します。現在、以下のように写真を読み込んでいます。

   -(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として保存される場所です。

これは、ユーザーがアプリを壊して写真を1つずつスクロールしようとしない場合はうまく機能しますが、選択範囲全体をスクロールしようとすると無残に失敗します。ユーザーが各写真の後で停止しない限り、ページは空白です。scrollViewDidScroll ala PageControlサンプルを使用してみましたが、写真がすべて巨大であるため、ラグが非常に目立ちます。

写真をスムーズにロードする方法はありますか?

4

2 に答える 2

0

私も同様の状況にあり、NSOperationのカスタムサブクラスを作成して、画像を別のスレッドにロードし、メインスレッドのメソッドを呼び出して表示することで対処しました。

画像の読み込み中にUIActivityViewを表示しました

お役に立てば幸いです。

于 2011-07-29T12:36:37.153 に答える
0

使用scrollViewDidEndDeceleratingする場合は、スクロールビューが停止したときにのみ起動します。私はscrollViewDidScrollそのために使用します。(例でも使用されています)

于 2011-07-29T12:44:01.587 に答える