2012-02-21 4 views
0

私のアプリでは、私はグリッドビューであるルートビューを持っています。グリッドビューのセルに画像をロードしています。画像のロードに問題があります。私がアプリケーションを起動するとすぐに、イメージがセルにロードされてから1秒後に空のセルが出てきます。この問題を解決する方法はありますか?以下は私のコードです。Objective-CのAQGridViewでイメージの読み込みが遅れる

UIImage *defaultImage = [UIImage imageNamed:@"addEmployee.png"]; 
if (!employee.imageName) { 
    return defaultImage; 
} 

    if ([_imageCache objectForKey:employee.imageName]) { 
     return [_imageCache objectForKey:employee.imageName]; 
    } 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{ 
    UIImage *image = [UIImage imageWithContentsOfFile:[self imagePath:employee.imageName]]; 
    dispatch_async(dispatch_get_main_queue(),^{ 
     if (image) { 
      [_imageCache setObject:image forKey:employee.imageName]; 
      cell.imageView.image = image; 
     } else { 
      [_imageCache setObject:defaultImage forKey:employee.imageName]; 
      cell.imageView.image = defaultImage; 
      return; 
     } 
    }); 
}); 

return cell.imageView.image; 

} 

答えて

0

画像の読み込みには時間がかかりますが、瞬時に行う方法はありません。あなたのコードは分かりやすいように見えます。メインスレッドからイメージをロードしてUIをブロックしないようにしてください。それをより速くする唯一の方法は、画像を少なくしたり、画像を小さくすることです。

+0

@Tart:ありがとうございました。私はすでに画像を読み込み速度を上げるために画像のサイズを変更していますが、画像の枚数を減らすことはできません。だから私はこれらの権利とは別に何もできないと思いますか?とにかく、あなたが何か考えたら教えてください。 – jessy

関連する問題