2011-03-09 7 views
5

私はネットをプルするいくつかのデータでUITableViewを生成するUITableViewControllerを持っています。各セルのデータは、バックグラウンドとして使用されるイメージで構成されています。NSOperationQueueに追加されたNSOperationをMaxConcurrentOperationCountに4で設定してダウンロードします。イメージがダウンロードされない限り、汎用のプレースホルダが表示されます。ダウンロードが完了したら、ダウンロードした画像を置き換える(フェードアウト/フェードイン)したいと思います。フェードアニメーションUITableViewCell

私はUITableViewControllerのcellForRowAtIndexPathの中に次のコードを使用しています。

[UIView beginAnimations:@"fade" context:nil]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:3.0]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
cell.placeholderUIImage.alpha = 0.0; 
cell.backgroundUIImage.alpha = 1.0; 
[UIView commitAnimations]; 

アニメーションは一つのセルで開始かのように、ほとんどの背景画像を、瞬時に設定されているためには、beginAnimationsの次の呼び出しによって「上書き」されていたので、これは残念ながらちょうど、行のカップルのためにランダムに取り組んでいます。

答えて

8

UITableViewにはフェードアニメーションの行を再ロードするための組み込みサポートがあります。[tableView reloadRowsAtIndexPaths:... withRowAnimation:UITableViewRowAnimationFade]を呼び出して、cellForRowAtIndexPathが既にテーブルにあるUITableViewCellインスタンスを返さないようにしてください。

+0

テーブルビューのレイアウトが完了した後で呼び出す必要があるようです。 – shiami

+0

すべてのコードスニペットしてください? –

関連する問題