自定义展开 Segue
Posted
技术标签:
【中文标题】自定义展开 Segue【英文标题】:Custom Unwind Segue 【发布时间】:2013-06-04 16:22:50 【问题描述】:类似于this question,我构建了一个自定义segue,显示目标视图从顶部向下推源视图。现在我正在尝试构建一个完成相同动画但相反的展开转场。知道我会怎么做吗?
【问题讨论】:
【参考方案1】:您可以通过执行以下检查来使用相同的自定义 segue 类:
// check if the sourceViewController has been presented modally with a navigationController or just by itself.
UIViewController*presentingViewController = nil;
if ([sourceViewController.presentingViewController isKindOfClass:[UINavigationController class]])
presentingViewController = sourceViewController.presentingViewController;
else
presentingViewController = sourceViewController;
// check which animation we need to perform
if ([destinationViewController.presentingViewController isEqual:presentingViewController])
// animation for unwind segue
...
else
// animation for presenting segue
...
【讨论】:
展开segue的//动画中有什么内容?一个 UIStoryboardSegue 实例? 它在你的 UIStoryboardSegue 子类的 -perform 方法中。有关它的更多信息,请查看 developer.apple.com/library/ios/documentation/uikit/reference/UIStoryboardSegue_Class/Reference/Reference.html。你的动画逻辑在我放点的地方。 您如何处理展开转场动画逻辑,因为您显然无法将目标视图添加为源视图的子视图? 您可以以任何您想要的方式为这两个视图设置动画。完成后,您可以致电[sourceViewController presentViewController:destinationViewController animated:NO]
,您就完成了。以上是关于自定义展开 Segue的主要内容,如果未能解决你的问题,请参考以下文章
自定义通知Notification:自己定义通知Notification下拉后的显示样式
尝试使用 UIViewAnimationOptionTransitionFlipFromLeft 展开自定义 Segue