我正在尝试以模拟提示/解散UINavigationController
的方式自定义UIViewController
基于推送/弹出导航的过渡动画。
以下是标准动画的示例:
我能够获得相同的“从底部向上滑动”推动动画,实现自定义垂直UIStoryboardSegue
。
困难的部分是实现对应的流行动画。 我能得到的最好的是:
这是同样效果的慢动作版本:
从上一个动画中你可以理解它与标准的消除模态动画不同,主要是因为泡泡糖屏幕不应该从上到下滑动,但应该已经存在于海军画面后面流行音乐。
这是我用来创建虚假解雇模态动画的代码:
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)
}
}
提前感谢您的回答和评论!
答案 0 :(得分:2)
尝试使用:
transition.type = kCATransitionReveal
transition.subtype = kCATransitionFromBottom