我正在尝试以模拟呈现/关闭 UIViewController
的方式自定义基于推送/弹出导航的 UINavigationController
的过渡动画。
这是标准动画的示例:
- 推送到绿屏,
- 呈现模态橙色屏幕,
- 关闭模态 橙色屏幕和
- 弹出 回到青色屏幕。
我能够获得实现自定义垂直 UIStoryboardSegue
的相同“从底部向上滑动”推送动画。
困难的部分是实现对应的弹出动画。我能得到的最好的是:
这是相同效果的慢动作版本:
从前面的动画中您可以看出它与标准dismiss modal 动画的不同之处主要是泡泡糖屏幕不应从上到下滑动,但在播放期间应该已经出现在海军屏幕后面流行音乐。
这是我用来创建假关闭模态动画的代码:
class FakeModalNavigationController: UINavigationController {
fileprivate static let unwindToBubblegumScreenSegueID = "unwindToBubblegumScreenSegueID"
override func unwind(for unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) {
if unwindSegue.identifier == type(of: self).unwindToBubblegumScreenSegueID {
popViewControllerAnimatedFromBottom(subsequentVC)
}
}
fileprivate func popViewControllerAnimatedFromBottom(_ viewControllerToPop: UIViewController) {
let transition = CATransition()
transition.duration = 0.25
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromBottom
view.layer.add(transition, forKey: nil)
popViewController(animated: false)
}
}
提前感谢您的回答和评论!
最佳答案
尝试使用:
transition.type = kCATransitionReveal
transition.subtype = kCATransitionFromBottom
关于ios - 使用自定义 "dismiss modal"类动画弹出 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42023997/