如何使用自定义 UIViewController 转换来实现这一点?

Posted

技术标签:

【中文标题】如何使用自定义 UIViewController 转换来实现这一点?【英文标题】:How can I use custom UIViewController transitions to achieve this? 【发布时间】:2014-06-25 18:15:24 【问题描述】:

所以我的应用程序中有一个流程,其中所有视图控制器都具有相同的渐变背景(使用 UIImageView)。

我以模态方式向它们中的每一个呈现交叉溶解过渡,而不是使用导航控制器,因为我不想要水平推送/弹出过渡。有一个更好的方法吗?也许使用导航控制器并禁用推送/弹出动画并且只是将 UI 元素淡入/推送到视图中?

我希望它看起来背景不会在工作流程中发生变化,但每个视图控制器的 ui 元素/内容确实会发生变化。

【问题讨论】:

【参考方案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: 等效项(因为我不需要知道任何方法可以解除多个视图控制器)。

【讨论】:

以上是关于如何使用自定义 UIViewController 转换来实现这一点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在通用 UIViewController 之后设置自定义 UIViewController?

如何判断自定义 UITableViewCell Xib 在哪个 UIViewController 上?

可以使用自定义 UIViewController 但没有自定义 UIView 类来实现手势识别吗?

如何将自定义单元格连接到 UIViewController?

iPhone IOS5 Storyboard,如何加载带有自定义 .xib 文件的 UIViewController?

如何让 UITableView 继承 UIViewController 的自定义子类?