带有自定义过渡的 presentViewController

Posted

技术标签:

【中文标题】带有自定义过渡的 presentViewController【英文标题】:presentViewController with custom transition 【发布时间】:2013-01-30 10:55:38 【问题描述】:

我想展示一个模态 UIViewController,它具有与工具包可用的不同的转换。确切地说,与从底部滑动(UIModalTransitionStyleCoverVertical)相比,我想要一个倒置动画,present = 从顶部滑入,dismiss = 从顶部滑出。

我不认为 UIModalTransitionStyleCoverVertical 有一个简单的倒置选项,所以我想我需要自己制作一个。

我也没有使用 segue/storyboard,不确定这是否会有所不同。

我找到了一些解决方案,它们建议简单地为新的 viewcontroller 视图设置动画并使用 presentViewController 并将动画选项设置为 NO。不幸的是,我遇到的问题是背景立即变黑,即使我定义了具有清晰背景且不透明的新视图控制器视图。

知道如何解决这个问题吗?非常感谢!

【问题讨论】:

您能展示一下您现在是如何尝试为您的控制器设置动画的吗?否则很难说为什么背景会变黑...... 你可以试试这样的自定义动画...CATransition *transition = [CATransition animation]; transition.duration = 0.5f; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionFade; 看起来解决方案是使用屏幕截图,我遇到的问题是它花费了 700ms 太长,正在查看它... 我实际上不希望使用屏幕截图解决方法。将尝试自定义动画。谢谢! 【参考方案1】:

我解决了背景不透明的问题,截屏并将其用作模态视图控制器的背景。

【讨论】:

哈哈,刚好在寻找同样问题的解决方案时发现了这个问题!【参考方案2】:

    使用 CATransition 应用您的自定义动画。

    将呈现的视图控制器的 modalPresentationStyle 属性设置为 UIModalPresentationCustom(适用于 ios 7 或更高版本)。另请参阅 UIModalPresentationOverCurrentContext iOS8 或 UIModalPresentationCurrentContext。

对于我来说,我想要相同的动画风格,但我只需要使用 iOS 8 的 UIModalPresentationOverCurrentContext。

【讨论】:

以上是关于带有自定义过渡的 presentViewController的主要内容,如果未能解决你的问题,请参考以下文章

带有旋转的自定义 UIViewController 过渡

使用带有子类 UINavigationController 的自定义 iOS 7 过渡偶尔会导致黑屏

从自定义大标题导航栏过渡到常规导航栏时出现黑框

Material-UI - 如何将自定义 Snackbar 的过渡更改为 Slide

是否可以打开带有某种过渡的弹出窗口,因为我们在屏幕中有过渡

带有 UINavigationController 的 iOS 7 自定义当前转换