当我使用UIViewControllerAnimatedTransitioning
在两个视图控制器之间开发自定义转换时,以及当我将iPhone模拟器设置为慢动作模式(以便轻松调试动画)时,永远不会调用动画完成处理程序。这非常烦人,因为转换永远不会完成,并且必须杀死app,因为UI没有响应。
当然,当慢动作关闭时它会很好用。
简单UIViewControllerAnimatedTransitioning
实施的一个例子:
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView
guard
let fromViewController = transitionContext.viewController(forKey: .from),
let toViewController = transitionContext.viewController(forKey: .to)
else { return }
containerView.addSubview(toViewController.view)
toViewController.view.transform = CGAffineTransform(translationX: toViewController.view.bounds.width, y: 0)
fromViewController.beginAppearanceTransition(false, animated: true)
toViewController.beginAppearanceTransition(true, animated: true)
UIView.animateSpringly(duration: self.transitionDuration(using: transitionContext), animations: {
fromViewController.view.transform = CGAffineTransform(translationX: -fromViewController.view.bounds.width, y: 0)
fromViewController.view.transform = .identity
}, completion: { _ in
transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
fromViewController.endAppearanceTransition()
toViewController.endAppearanceTransition()
})
}
是模拟器错误,还是我的实现有问题?