Я пытаюсь реализовать анимацию перелистывания страниц, которая работает, когда пользователь не слишком быстро перемещается по страницам.
Мой код выглядит следующим образом:
[CATransaction begin];
[CATransaction setAnimationDuration:duration];
[CATransaction setCompletionBlock:^{
if (pageDifference == 1 && setDelegate) {
[self cleanupFlip];
self.animationInProgress = NO;
}
}];
flipAnimationLayer.transform = endTransform;
[CATransaction commit];
endTransform
- это CATransform3DIdentity
, который, как я уже сказал, отлично работает.В моем cleanupFlip
я готовлю скриншот для следующей страницы, который позволяет мне выполнять анимацию перелистывания страниц.И скриншот, который я делаю, кажется, проблема;как только пользователь нажимает для быстрого перехода по страницам, анимация не происходит, но страницы просто меняются - без анимации перелистывания страниц.Я получил улучшение, установив флаг animationInProgress
, который позволяет избежать запуска следующей анимации до того, как старая закончится.
Чего я не получаю: я ожидаю, что это будет работать нормально, так как я устанавливаюanimationInProgress
флаг в самом конце анимации, поэтому все должно быть подготовлено к следующему запуску - но это не так ...
На симуляторе я могу щелкнуть быстрее, чем на устройстве - там япридется подождать секунду, пока я не смогу начать следующий поворот страницы.
Без создания снимка экрана (например, просто с использованием пустого изображения) все работает как положено.Кажется, что это проблема, если cleanupFlip
занимает некоторое время.
Есть идеи, как мне сделать эту работу?
Спасибо большое!