使用自定义segue时,如何获得弹出过渡效果?
以下问题几乎完全符合我的要求,但我需要做一个“上一个”/“下一个”类型的动画。
Instead of push segue how to replace view controller (or remove from navigation stack)?
所以,我试图为我们使用CATransition工作。它没有给出正确的效果。
- (void)perform {
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
// Not quite what I want.
// will make configurable (pop / push)
CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.type = kCATransitionReveal;
[[[[sourceViewController view] window] layer] addAnimation:transition
forKey:kCATransitionReveal];
// Grab Variables for readability
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
UINavigationController *navigationController = sourceViewController.navigationController;
// Get a changeable copy of the stack
NSMutableArray *controllerStack = [NSMutableArray arrayWithArray:navigationController.viewControllers];
// Replace the source controller with the destination controller, wherever the source may be
[controllerStack replaceObjectAtIndex:[controllerStack indexOfObject:sourceViewController] withObject:destinationController];
// Assign the updated stack with animation
[navigationController setViewControllers:controllerStack animated:YES];
}