2011-03-09 11 views
5

मेरे पास एक UITableViewController है जो कुछ डेटा के साथ UITableView को पॉप्युलेट करता है जिसे मैं नेट खींचता हूं। प्रत्येक सेल के डेटा में बैकग्राउंड के रूप में उपयोग की जाने वाली छवि भी होती है, जिसे मैं एनएसओपरेशन क्यूयू में MaxConcurrentOperationCount पर 4 से सेट किए गए एक अलग एनएसओपरेशन में डाउनलोड कर रहा हूं। जब तक छवि डाउनलोड नहीं होती है, तब तक मैं एक सामान्य प्लेसहोल्डर दिखा रहा हूं डाउनलोड किए गए चित्र के साथ सफलतापूर्वक डाउनलोड होने के बाद मैं (fading out/fading in) को प्रतिस्थापित करना चाहता हूं।फीड एनीमेशन 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 अंतर्निहित एक fading एनीमेशन के साथ एक पंक्ति को पुन: लोड के लिए समर्थन, बस [tableView reloadRowsAtIndexPaths:... withRowAnimation:UITableViewRowAnimationFade] कॉल और सुनिश्चित करें कि आपके cellForRowAtIndexPath UITableViewCell उदाहरण तालिका में है कि पहले से ही वापस नहीं करता है सुनिश्चित करें।

+0

ऐसा लगता है कि टेबलव्यू लेआउट पूर्ण होने के बाद कहा जाना चाहिए। – shiami

+0

कोई कोड स्निपेट कृपया? –