iPhone: Анимация переворота с использованием методов блочной анимации не является плавной при использовании в Swipe gesture

#iphone #objective-c #ios #cocoa-touch

#iPhone #objective-c #iOS #cocoa-touch

Вопрос:

Я пытаюсь отобразить определенное подвидение в ячейке таблицы, когда пользователь проводит пальцем по ячейке. Я использую блочную анимацию, предоставляемую iOS.

Я регистрируюсь для swipe gesture в методе viewDidLoad UITableViewController, используя следующий код.

UISwipeGestureRecognizer *showExtrasSwipe = [[Выделение UISwipeGestureRecognizer] Инициализация с целью:self action:@selector (cellSwipe :)];
 showExtrasSwipe.direction = UISwipeGestureRecognizerDirectionLeft;
 [self.TableView addGestureRecognizer:showExtrasSwipe];

Когда пользователь проводит пальцем по ячейке, я запускаю анимацию переворота, используя следующий код.

-(void)cellSwipe:(UISwipeGestureRecognizer *) жест
{

 NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"ActionsCell" владелец: self параметры: ноль];
 ActionsCell* ActionView = (ActionsCell *)[индекс объекта nib:0]; 
[UIView transitionWithView:swipedCell длительность: 0.5 
параметры: UIViewAnimationOptionTransitionFlipFromLeft 
 анимации:^ { [swipedCell addSubview:ActionView]; } 
 завершение: ноль];

}

В приведенной выше реализации я заметил, что продолжительность анимации переворачивания не является постоянной, и иногда анимация не является плавной. Я заметил, что если я быстро проведу пальцем по ячейке, анимация будет плавной. Но если я провожу пальцем немного медленно, т. Е. Трачу больше времени на пролистывание, анимация переворота не является плавной, а иногда анимация вообще не видна.

Может быть, это потому, что я установил продолжительность анимации равной 0,5 секунды, а часть времени, затрачиваемого на медленный свайп, уменьшает доступную продолжительность анимации? Есть ли какой-либо способ проверить, что swipe завершился? Я использую iOS 4.3

Ценю вашу помощь!!

Ответ №1:

Мы, наконец, решили эту проблему, внедрив обходной путь, слегка увеличив продолжительность перехода с 0,5 с до 0,8 с. Пока не уверен, что может быть правильным решением.