Слайд UITableViewCell - PullRequest
       4

Слайд UITableViewCell

3 голосов
/ 12 апреля 2011

Моя цель состоит в том, чтобы UITableViewCell соскользнул с одной стороны экрана (как в Твиттере), а затем снова соскользнул с другой стороны. Я могу заставить ячейку скользить по экрану вправо, но я не могу понять, как заставить ее снова скользить по экрану слева направо. Вот мой код, чтобы сдвинуть его вправо:

UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath];
[cell.layer setAnchorPoint:CGPointMake(0, 0.5)];
[cell.layer setPosition:CGPointMake(cell.frame.size.width, cell.layer.position.y)];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position.x"];
[animation setRemovedOnCompletion:NO];
[animation setDelegate:self];
[animation setDuration:0.14];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[cell.layer addAnimation:animation forKey:@"reveal"];

Спасибо за любую помощь!

Ответы [ 2 ]

6 голосов
/ 13 апреля 2011

UITableView предоставляет методы для вставки и удаления строк с анимацией и обрабатывает всю анимацию для вас. Попробуйте что-то вроде этого:

[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:myIndexPaths
                 withRowAnimation:UITableViewCellRowAnimationRight];
[tableView endUpdates];

А потом скользить в новую ячейку:

[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:myNewIndexPaths
                 withRowAnimation:UITableViewCellRowAnimationLeft];
[tableView endUpdates];

Методы beginUpdates/endUpdates приводят к одновременному объединению и выполнению анимаций.

Остерегайтесь 2 вещей:

  1. При большом количестве табличных данных вставка может занять много времени (особенно если вы по существу заменяете всю таблицу). Вызов [tableView reloadData] в этом случае работает лучше, но deleteRowsAtIndexPath:withRowAnimation: все еще можно использовать для хорошего визуального эффекта.

  2. Вы должны быть уверены, что фактические данные в вашей таблице изменяются соответственно и правильно. То есть, если вы удаляете или вставляете строки из таблицы, то ваш массив (или любой другой), который питает таблицу, должен также правильно отражать количество строк в таблице на каждом шаге.

2 голосов
/ 13 апреля 2011

Поведение, которое вы хотите, должно выполняться путем анимации подвидов ячейки, а не самой ячейки. Клетка должна оставаться на месте в таблице. Создайте пользовательскую ячейку с нужными подпредставлениями в contentArea, а затем вставьте их в нужное положение.

Стандартные анимации на основе блоков UIView также должны отлично работать для этого.

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