2011-03-09 225 views
5

我有一個UITableViewController,用一些數據填充一個UITableView,我把它從網上取下來。每個單元格的數據也包含一個圖像作爲背景,我正在下載一個單獨的NSOperation添加到一個NSOperationQueue 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

似乎必須在tableview佈局完成後調用。 – shiami

+0

請任何代碼片段? –