【问题标题】:Dimming / Transforming current app screen调暗/转换当前应用程序屏幕
【发布时间】:2014-01-12 23:48:10
【问题描述】:
您如何实现动画调暗/转换当前应用屏幕,然后在顶部显示另一个模态或视图?这是否涉及对当前屏幕进行屏幕截图然后使用自定义转换,或者是否有其他方法可以实现这一点?如果可以,能否提供示例代码?
显示实现此交互的其他应用的屏幕截图可能更容易(来自 Uber、Tweetbot 3.0 和 Tumblr 应用的屏幕):
TweetBot 3.0
Tumblr
Tumblr #2
【问题讨论】:
标签:
ios
modal-dialog
transition
user-experience
interaction
【解决方案1】:
我所做的是在当前视图控制器的内容视图之上放置一个窗口大小的 UIView,其中 opaque 属性设置为 NO,背景颜色为 back,不透明度为 50%。然后我在上面放了一个视图。效果很好。
您需要向当前视图控制器添加逻辑来设置和管理它。使深色覆盖视图成为一个插座,并将另一个显示视图作为子视图放入其中。这样,您可以简单地从视图控制器的内容视图中删除覆盖视图以使其消失。您可能还需要某种动画,在这种情况下,您可能需要为覆盖视图和在其上显示的内容视图提供单独的出口。
【解决方案2】:
您可以在 iOS 7 中使用自定义动画过渡来执行此操作。
如果您在 toVC(模态)上设置 modalPresentationStyle = UIModalPresentationCustom,它将在转换后保留 fromVC(背景)。作为过渡的一部分,您还可以更改 fromVC 的 alpha 以使背景变暗。
查看我对 WWDC Session 218 示例代码的实现:使用视图控制器的自定义转换。如果您单击选项,您将获得一个模态转换,其背景暗淡与您正在寻找的相似。
https://github.com/soleares/SOLPresentingFun