2011-03-09 8 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

코드 스 니펫으로주세요. –

관련 문제