popViewControllerAnimated: пользовательская анимация перехода?

Да, я уже искал ответ. Ни одно из решений не работает, за исключением того, которое не дает возможности для перехода с постепенным исчезновением, только переворачивание или скручивание.

Как это:

<code>methodname
    configure animation
    [self.navigationController popViewControllerAnimated:NO];
</code>

Независимо от того, какое разнообразие конфигурации переходной анимации я пробую, ничто заметно не отличается от использования только обычного однострочного всплывающего окна. Если я изменю это на…Animated:YES];, Я получаю стандартную поп-анимацию, может быть, что-то странное происходит из-за испорченного конфига.

Итак, мой вопрос заключается в следующем: как я могу сделатьpop с, если нетCrossDissolveтогда хоть что то выглядит так же? Это вообще возможно с навигационным контроллером?

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

Ответы на вопрос(3)

Joris Kluivers ответ в Свифт 3:

CATransaction.begin()
CATransaction.setDisableActions(true)

let animation = CATransition()
animation.type = kCATransitionFade
self.navigationController?.view.layer.add(animation, forKey: "someAnimation")
_ = self.navigationController?.popViewController(animated: false)

CATransaction.commit()

В iOS 7 выше, вы можете посмотреть наUIViewControllerAnimatedTransitioning для представленных контроллеров представления илиUINavigationControllerDelegate метод:

- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC

У меня есть несколько пример кода из другого вопроса для получения дополнительной информации

Решение Вопроса

именно так и была спроектирована система.

Но если вы настаиваете на использовании навигационного контроллера, есть способ, хотя и несколько уродливый.

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];

CATransition *transition = [CATransition animation];
[transition setType:kCATransitionFade];
[self.navigationController.view.layer addAnimation:transition forKey:@"someAnimation"];

[self.navigationController popViewControllerAnimated:YES];
[CATransaction commit];

TheCATransaction отключит все стандартные анимации.CATransition добавляет плавный переход к слою контроллера навигации при смене видов (в этом случае удаляется всплывающее представление вида контроллера).

 Thromordyn11 мая 2012 г., 16:56
Абсолютно идеально.
 EricS25 янв. 2014 г., 22:58
В iOS 7 я обнаружил, что мне нужно передать NO в popViewControllerAnimated, а не YES, но в остальном это работает хорошо.

Ваш ответ на вопрос