使用UIViewControllerAnimatedTransitioning时,iOS模拟器慢动作动画永远不会结束

时间:2018-04-19 10:03:23

标签: ios ios-simulator uiviewanimation

当我使用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()
        })
    }

是模拟器错误,还是我的实现有问题?

0 个答案:

没有答案