目前,我有一个视图控制器呈现其他视图控制器。我想做的是重新创建推送视图控制器时使用的默认动画。
我目前的做法是:
FirstViewController
:
@IBAction private func push(sender: AnyObject) {
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SecondViewController")
let transition = CATransition()
transition.duration = 0.5
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
view.window?.layer.addAnimation(transition, forKey: kCATransition)
presentViewController(vc, animated: false, completion: nil)
}
SecondViewController
:
@IBAction private func pop(sender: AnyObject) {
let transition = CATransition()
transition.duration = 0.5
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromLeft
view.window?.layer.addAnimation(transition, forKey: kCATransition)
dismissViewControllerAnimated(false, completion: nil)
}
它几乎可以工作,但我有一个奇怪的行为,在视图控制器之间转换时出现一种黑屏/闪烁。我已经尝试过改变window.backgroundColor
但这并不能解决问题。
提前致谢 0_0...
问题只是在于您所做的不是如何自定义当前/关闭过渡的动画。苹果已经为你提供了一个清晰的、完善的、官方的方式来做到这一点,而你所做的并不是它。您需要为您呈现的视图控制器提供一个transitioningDelegate
随着实施animationControllerForPresentedController:
and animationControllerForDismissedController:
,并实现 UIViewControllerAnimatedTransitioning 协议,可能还有自定义 UIPresentationController 子类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)