使用 UIViewAnimationOptions 的 transitionFromView 类似于使用 UINavigationController 导航

transitionFromView with UIViewAnimationOptions similar like navigating with UINavigationController

对于从一个视图控制器到另一个视图控制器的动画,我正在使用描述 here 的类似方法:

UIWindow *window = (UIWindow *)[[UIApplication sharedApplication].windows firstObject];
[UIView transitionFromView:window.rootViewController.view
                    toView:vc.view
                  duration:0.65f
                   options:UIViewAnimationOptionTransitionCrossDissolve // transition animation
                completion:^(BOOL finished){
                    window.rootViewController = vc;
                }];

查看 UIViewAnimationOptions 我没有找到默认动画的选项,当对 UINavigationController 执行相同操作时会出现这种情况。

是否可以获得相同的动画行为(向左移动视图)?怎么样?

我用this动画试了一下:

[UIView animateWithDuration:0.65 animations:^{
    view.transform = CGAffineTransformMakeTranslation(-view.frame.size.width, 0);
} completion:^(BOOL finished) {
    // do something
}];

但是在转换到新视图时,背景是完全黑色的,而不是引入另一个视图控制器。

现在我正在以不同的方式进行。我从我的导航控制器及其根视图开始。然后我将另一个视图控制器压入堆栈。在这个新视图控制器的 viewDidAppear 中,我从导航堆栈中删除了第一个视图控制器。缺点之一:您可以短时间看到后退按钮。

我尝试的动画解决方案需要其他视图控制器动画。另外,我还遇到了布局不正确的视图问题(因为 edgesForExtendedLayout)。