2

このトピックが何度も重複していることについて誰かが何かを言う前に、Web (SDWebImage github ソリューション) からリモート画像を読み込む必要がないことに注意してください。ドキュメント フォルダーに動的に保存された画像を読み込もうとしているので、それらはコードによって生成された画像名を保存したsqliteテーブルのレコードを介してそれらを参照するtableViewにそれらをロードしたいときまでにローカル。

したがって、すべての sqlite データを解析した後、特定の時点で CellForRowAtIndexPath メソッドに次のコード行があります。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    NSString *imageName = [[favorites objectAtIndex:[indexPath row]] objectForKey:@"imagename"];
    cell.image.image = [self loadImage: imageName]; // Is a custom cell so cell.image is a UIImageView, and I'm setting its image property
    ...
}

私の loadImage メソッドは次のようになります。

- (UIImage*)loadImage:(NSString*)imageName {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]];

    return [UIImage imageWithContentsOfFile:fullPath];

}

また、このコードは実際には機能しますが、テーブルを下にスクロールするとラグが発生することに注意してください。どうすればパフォーマンスを向上させることができますか。つまり、バックグラウンドで画像をロードすることが頭に浮かびますが、画像は既にそこにあります。誰かがこれについて具体的な解決策を教えてもらえますか?

お知らせしますが、私は iOS 5 と ARC を使用しています。

どんな助けでも大歓迎です。

4

1 に答える 1

0

まず、ロードする画像のサイズを小さくします。

次に、GCD を使用して tableView:cellForRowAtIndexPath: に画像をロードしてみます。

于 2013-04-18T10:02:03.860 に答える