Исчезать анимация UITableViewCell - PullRequest
5 голосов
/ 09 марта 2011

У меня есть UITableViewController, который заполняет UITableView некоторыми данными, которые я извлекаю из сети. Данные для каждой ячейки также состоят из изображения, используемого в качестве фона, которое я загружаю в отдельном NSOperation, добавленном в NSOperationQueue с MaxConcurrentOperationCount, установленным в 4. Пока изображение не загружено, я показываю общий заполнитель, который я хотел бы заменить (исчезнуть / исчезнуть) загруженным изображением после его успешной загрузки.

Я использую следующий код, помещенный в cellForRowAtIndexPath UITableViewController.

[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.

1 Ответ

7 голосов
/ 09 марта 2011

UITableView имеет встроенную поддержку для перезагрузки строки с анимацией затухания, просто вызовите [tableView reloadRowsAtIndexPaths:... withRowAnimation:UITableViewRowAnimationFade] и убедитесь, что ваш cellForRowAtIndexPath не возвращает экземпляр UITableViewCell, который уже находится в таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...