自定义展开 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下拉后的显示样式

未触发自定义 segue 的展开

尝试使用 UIViewAnimationOptionTransitionFlipFromLeft 展开自定义 Segue

从多个自定义 segue 展开到根控制器时崩溃

从自定义导航栏展开 segue 后,如何切换回默认导航栏外观?

HBuilderX 开发工具中实现自定义生成代码块的功能