とても遅いです、私はコードの下のような細胞を作成:のtableViewにスクロールすると、私は画像と背後にあるテキストを持っているテーブルビューを持っている
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
NSDictionary * companyProductRow = [DB getCompanyProductRow:[self.companyProductIDs objectAtIndex:indexPath.row]];
int companyProductID = [[companyProductRow objectForKey:@"ID"] intValue];
cell.tag = companyProductID;
cell.textLabel.text = [companyProductRow objectForKey:@"ImagePath"];
NSString* fullPath = [FileManager fullPath:companyProductID fairDirectory:[[self.currentFair objectForKey:@"ID"]intValue]];
[[cell imageView] setImage:[UIImage imageWithContentsOfFile:fullPath]];
return cell;
}
私はアップルの開発者向けサイトでのテーブルビューのパフォーマンスに関するいくつかのヒントを読みますが、すべての彼らは言った: 細胞を再利用する。オブジェクトの割り当てには、特に、ユーザーがテーブルビューをスクロールするときなど、短時間に繰り返し割り当てを行う必要がある場合は、パフォーマンスコストが発生します。新しいセルを割り当てる代わりにセルを再利用すると、テーブルビューのパフォーマンスが大幅に向上します。 コンテンツの再レイアウトは避けてください。カスタムサブビューでセルを再利用する場合は、テーブルビューがセルを要求するたびにそれらのサブビューをレイアウトしないでください。セルが作成されると、サブビューを一度レイアウトします。 不透明なサブビューを使用します。テーブルビューセルをカスタマイズするときは、透明ではなく、セルのサブビューを不透明にします。
リンゴサイトのサンプルは同じですが、uitableviewをスクロールするとパフォーマンスが向上する方法はありますか? (ディスクからイメージを読み込むべきとき)。
ありがとう
お返事ありがとうございます、もっと説明できます、イメージはディスクにあり、私は完全なイメージパスを持っています、私はパスが "imageNamed"で動作しないと思います...? – ali
あなたの画像が小さければ(私はtableViewCellを想定しています)、私はそれらがアプリケーションの起動時にすべてメモリにロードされます。単に配列を作成し、 'imageWithContentsOfFile:'でイメージをロードしてください。そのための良い場所はFileManagerです。 しかし、私はむしろすべての画像をプロジェクトに追加し、代わりに '[UIImage imageNamed:]'を使用します。 – yinkou