у меня есть проблемы с помощью ползунка, чтобы вызвать серию анимаций, вот код:UIView анимация завершения не работает должным образом
-(void)slideAlpha:(id)sender{
self.bigPhotoViewA.alpha = self.alphaSlider.value;
if (self.alphaSlider.value == 1){
[UIView animateWithDuration:1
animations:^{
self.alphaSlider.alpha = 0;
} completion:nil
];
[self performSelector:@selector(nextPhotoAnimation) withObject:self afterDelay:5.0 ];
}
}
-(void) nextPhotoAnimation{
self.alphaSlider.value = 0;
[UIView animateWithDuration:2
animations:^{
self.bigPhotoViewA.alpha = 0.0;
self.bigPhotoView.alpha = 0.0;
self.smallPhotoView.center = CGPointMake(startX, startY);
}
completion:^(BOOL finished) {
NSLog(@"Animation ended");
self.smallPhotoView.image = ((UIImage *)[smallImagesArray objectAtIndex:imageCount]);
}
];
}
Итак, когда ползун достигает значения 1, nextPhotoAnimation
запускается после задержка. Все идет нормально. Проблема возникает внутри nextPhotoAnimation
. Блок animations
работает нормально, но блок completion
запускается несколько раз каждый раз, когда вызывается nextPhotoAnimation
. Я получаю NSLog
от 6 до 9 раз, когда начинается nextPhotoAnimation
, а затем я получаю его снова в нужное время через 2 секунды.
Я попытался воспроизвести проблему с простым кодом и потоком animation
/completion
работает просто отлично.
проверка 'BOOL finished' в' завершения:^(BOOL законченный) ' – Akhilrajtr
@Akhilrajtr, я попытался положить весь' completion' блок внутри 'если (законченный) {...} 'заявление. Все еще работает неправильно. Спасибо за ваш комментарий. – guardabrazo