【问题标题】:How can I use custom UIViewController transitions to achieve this?如何使用自定义 UIViewController 转换来实现这一点?
【发布时间】:2014-06-25 18:15:24
【问题描述】:
所以我的应用程序中有一个流程,其中所有视图控制器都具有相同的渐变背景(使用 UIImageView)。
我以模态方式向它们中的每一个呈现交叉溶解过渡,而不是使用导航控制器,因为我不想要水平推送/弹出过渡。有一个更好的方法吗?也许使用导航控制器并禁用推送/弹出动画并且只是将 UI 元素淡入/推送到视图中?
我希望它看起来背景不会在工作流程中发生变化,但每个视图控制器的 ui 元素/内容确实会发生变化。
【问题讨论】:
标签:
ios
iphone
objective-c
cocoa-touch
【解决方案1】:
如果动画相当容易做,您可以提供自定义推送/弹出动画。:
[UIView animateWithDuration:0.75
animations:^{
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[self.navigationController pushViewController:nextView animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
}];
[UIView animateWithDuration:0.75
animations:^{
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];
}];
[self.navigationController popViewControllerAnimated:NO];
Source.
如果动画不是那么简单,如果您不需要导航栏,以模态方式呈现您的视图控制器是非常好的,但您必须提供自己的 popToViewController:animated: 等效项(因为我不需要知道任何方法可以解除多个视图控制器)。