Я пытаюсь остановить анимацию на моем UIActivityIndicatorView тем же методом, что и я, нажимаю контроллер вида, используя переход из режима CATransition.UIActivityIndicatorView продолжает анимацию предшествующего CATransition pushViewController
Вместо того, чтобы останавливать анимацию, а затем исчезать до следующего контроллера представления, анимация UIActivityIndicatorView анимации на протяжении всего исчезновения, независимо от того, как долго я устанавливаю продолжительность.
Любые идеи о том, как я могу заставить вращение остановиться, а затем выталкивать/исчезать тем же методом?
- (void)pushView:(NSNotification *)notification {
[self.activityIndicator stopAnimating];
NextViewController* nextViewController = [[NextViewController alloc] init];
CATransition *transition = [CATransition animation];
transition.duration = 1.5f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:nextViewController animated:NO];
}
Edit 1
В том же ключе, как ответ Давида, я был в состоянии успешно stopAnimating
, если я использовал dispatch_after
и задерживается на доли секунды. Есть ли лучший способ сделать это ?:
- (void)pushView:(NSNotification *)notification {
[self.activityIndicator stopAnimating];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.0001 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void){
NextViewController* nextViewController = [[NextViewController alloc] init];
CATransition *transition = [CATransition animation];
transition.duration = 1.5f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:nextViewController animated:NO];
});
}
Спасибо за ответ, Дэвид. К сожалению, 'dispatch_async' не работал для меня. Однако, если я задерживаю выполнение переходного блока с помощью 'dispatch_after', всего за долю секунды,' stopAnimating' ведет себя так, как ожидалось. Я редактировал свой вопрос, чтобы показать, как я изменил свой код. Должен быть лучший способ ... – Snow
Проверьте отредактированный код. Я забыл отправить все это в очередь по умолчанию. – David
Итак, ActivityIndicator останавливает анимацию сейчас, но представление не толкает ...:/Любые идеи? Я ценю помощь в любом случае – Snow