iOS呈现视图控制器animation为“推”(左右animation)
目前,我有一个视图控制器呈现其他视图控制器。 我想要做的是重新创build推动视图控制器时使用的默认animation。
我目前的做法是:
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 …
麻烦的是,你正在做的不是如何定制一个present / dismiss转换的animation。 苹果已经为您提供了一个清晰,完善,正式的方法来做到这一点,而您所做的不是这样。 你需要给你呈现的视图控制器一个transitioningDelegate
以及animationControllerForPresentedController:
和animationControllerForDismissedController:
实现,并实现UIViewControllerAnimatedTransitioning协议,可能还有一个自定义的UIPresentationController子类。