2012-03-12 6 views
0

私は、MPMediaQueryからアルバムのリストをロードしているUITableViewを持っています。非正方形のアルバムアートを持つアルバムが、組み込みのセルビューのラベルテキストを右に押すようになるまで、すべてがうまくいきました。これを気づくことは私の没落であり、プロセス中にスクロールがスムーズではないことに気がつきました。UITableview + iPodライブラリーからの画像で、不安定なスクロールが発生する。回避策はありますか?

私はポジショニングの問題を解決し、ペン先からの細胞を作るために行ってきましたが、パフォーマンスはまだ苦しみました。この時点で、私は膨大な量の研究を行い、実装する能力をすべて試していました。最初

  • はImageViewのでペン先からの細胞で、2つのラベル
  • はImageViewの中に奇妙なスケーリングを補正するために、私はそれ(パフォーマンスに本当のヒット)をトリミングするのUIView内ImageViewのを追加しました。
  • は、後処理を行わずに画像をロードしたが、まだジッタがありませんでした。テーブルビューから画像を渡して、(無効)のdrawRect(AppleのTableViewSuite例#5の例のように) -
  • は、セルを実装しました。これは当初は最初の8枚の画像しかロードしておらず、パフォーマンスはわずかに低下していました。
  • 私はその後、[myCell setNeedsDisplay]他のすべての画像が正しく表示されます、そしてパフォーマンスが戻ってダウンしたので、それはセルを再描画に設定。私はまた、変更のない画像で部分を再描画するだけでした。
  • スタティックイメージが1つのこの方法では、完全なパフォーマンスが得られました。

cellIdentifierなどの通常のものがすべて正しいことを確認しました。セルの表示にテキストしかない場合は、完全にスクロールします。 AppleのiPodのアプリで

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
// Cell initizalation 
static NSString *CellIdent = @"CellIdent"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdent]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] 
      initWithStyle:UITableViewCellStyleSubtitle 
      reuseIdentifier:CellIdent]; 
} 

cell.imageView.image = [[[[albumList 
         objectAtIndex:indexPath.section]objectAtIndex:indexPath.row] valueForProperty:MPMediaItemPropertyArtwork]imageWithSize:CGSizeMake(0,56)]; 
//it seems to scale with a sharper image if CGSizeMake has a value, rather than 
//CGSizeZero. It doesn't actually do any scaling at this point, which I initially thought 
//it would, but the results were more what I wanted so... 

return cell; 


} 

、芸術のスクロール等とアルバムのリスト:以下

私は現在のセルのイメージをつかんでいますどのように説明するために、デフォルトのセルのビューのいずれかを使用してtableviewcellの実装を見つけますシルク、明らかに、私は何かが欠けている。

+0

あなたのUITableViewCellをalloc'ingているが、あなたはそれを解放されていません。私は、allocラインにautoreleaseを追加することをお勧めします。 –

+0

私はARCを使用していますが、それは素晴らしいクラッシュを引き起こします(少なくとも、クラッシュすると思うのはどうか)=) – solenoid

答えて

0

この答えは役立ちます:

Tricks for improving iPhone UITableView scrolling performance?

ルックを特にステップ3で:

のUITableViewCellののdrawRectのすべてを描く:可能な場合はすべてのコスト(あるいはあなたが標準のアクセスが必要な場合にサブビューを避けますコンテンツビューのdrawRect:

例:

- (void)drawRect:(CGRect)rect { 
    [yourImage drawAtPoint:CGPointMake(0,0)]; 
} 
あなたがイメージを自分で描く場合

あなたは増加のパフォーマンスを示したアップルによるサンプルアプリを見つけることができます。

あなたが完全かつ明確な説明が詳細にUITableViewPerformanceをカバーし、このWWDCのセッションを見て欲しい場合は

https://developer.apple.com/library/ios/#samplecode/AdvancedTableViewCells/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009111

https://developer.apple.com/videos/wwdc/2010/?id=128

+0

私は実際には2番目の段落では役に立たないと言いました。 '[image drawAtPoint:point];'は現在、drawrectメソッドのwhatsですが、私はまだパフォーマンスヒットを受け取ります。ある種の方法でイメージを事前にキャッシュする必要があるのですか、またはより多くのセルをキューに入れる方法や、別のスレッドで合成するセルを入れる方法がありますか? – solenoid

関連する問題