启用了用户交互的自定义​​过渡动画

时间:2017-09-19 15:27:39

标签: ios uikit ios-animations

我有一个低alpha背景的自定义全屏警报。默认模态动画从下到上滑动。我想要淡入淡出的警报。我是UIViewControllerTransitioningDelegate + UIViewControllerAnimatedTransitioning。在我的animateTransition(using:)方法中,我有类似的内容:

func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        let containerView = transitionContext.containerView
        if let toView = transitionContext.view(forKey: .to) {
            toView.frame = containerView.frame
            containerView.addSubview(toView)
            UIView.animate(withDuration: duration, delay: 0,
                           usingSpringWithDamping: 0.5,
                           initialSpringVelocity: 0,
                           options: UIViewAnimationOptions.allowUserInteraction,
                           animations: {toView.alpha = 1})
            transitionContext.completeTransition(true)
        }
    }

问题是褪色效果在1-1.5秒左右看起来不错;但是,用户无法点击任何按钮,例如"是"或"不"在此过渡动画期间。我尝试了以下方法:

  • 将动画transitionContext.completeTransition(true)移到动画的完成处理程序之外,以便动画一开始就会发生
  • 添加UIViewAnimationOptions.allowUserInteraction选项
  • 按照另一篇文章
  • 的建议,在0.1(和1.0)处开始alpha
  • 我注意到UIViewControllerInteractiveTransitioning但似乎只允许与动画本身进行交互

我能看到这个工作的唯一方法是,如果我在VC中的viewDidAppear中执行淡入效果,在UIViewControllerAnimatedTransitioning中执行淡出效果。感觉坏人。这样做的正确方法是什么?

0 个答案:

没有答案
相关问题