Как лучше всего анимировать UITableViewCell или UIButton, чтобы загорелись красным - PullRequest
0 голосов
/ 22 ноября 2011

Я хочу, чтобы UITableViewCell (-background) вскоре загорелся красным и снова вернулся к старому виду.Это делается в течение жизни NSTimer, который дает постоянный импульс для запуска анимации.

Сейчас я использую метод animateWithDuration:delay:options:animations:completion: UIView, чтобы сначала изменить цвет фона ячеек на красный, а затем взавершающая часть, чтобы снова сделать его серым (фон ячейки серый).Но это решение почему-то не работает гладко.

ВОПРОС: Если подумать о основной анимации , как бы я лучше всего реализовал этот вид анимации для (а) UITableVeiwCell и (б) UIButton?

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

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

animateWithDuration - это оболочка UIView для основной анимации, но вы можете попробовать сделать это немного ниже и посмотреть, есть ли изменения. Чтобы сделать явную транзакцию CA на CALayer, сделайте что-то вроде:

[CATransaction begin];
[CATransaction setAnimationDuration:0.5];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[CATransaction setCompletionBlock:^{ //Your completion block }];

view.layer.backgroundColor = [UIColor whiteColor].CGColor;

[CATransaction commit];

Где view - рассматриваемый элемент управления. Для UIButton, который будет просто самой кнопкой, для UITableViewCell это будет зависеть от того, была ли таблица сгруппирована или нет, или если вы используете пользовательский UITableViewCell. Ячейка сгруппированной таблицы добавляет свойство backgroundview.

0 голосов
/ 24 марта 2012

Я использовал NSTimer для запуска анимации снова и снова. Каким-то образом это дало вышеописанные побочные эффекты. Сейчас я использую блочную анимацию, доступную с iOS4, которая работает намного плавнее. Вы должны объединить опции (UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse), чтобы повторить анимацию:

[UIView animateWithDuration:kDurationOfCellAnimation delay:0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
                 animations:^{
                     //this will be animated in and out
                     cell.backgroundColor = CELL_RECORDING_COLOR;

                 }
                 completion:^(BOOL finished){

                     cell.backgroundColor = TABLEVIEW_BACKGROUND_COLOR;

                 }];

Единственный побочный эффект, который я испытал, состоял в том, что анимация останавливается, когда ячейка отключается от экрана, чего не было в случае NSTimer.

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