使用 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
)。
对于从一个视图控制器到另一个视图控制器的动画,我正在使用描述 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
)。