小编sud*_*bre的帖子

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

我有一个具有低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)
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题在于淡入淡出效果大约在1-1.5秒左右;但是,用户在此过渡动画期间无法轻按任何按钮,例如“是”或“否”。我尝试了以下操作:

  • 将调用移至transitionContext.completeTransition(true)动画的完成处理程序之外,以便在动画开始时立即进行
  • 添加UIViewAnimationOptions.allowUserInteraction选项
  • 在另一篇文章中建议以0.1(和1.0)开始Alpha
  • 我确实注意到了UIViewControllerInteractiveTransitioning,但似乎这仅允许与动画本身进行交互

我能看到此工作的唯一方法是,如果我在VC中的viewDidAppear中执行淡入效果,而在UIViewControllerAnimatedTransitioning中执行淡出效果。觉得坏男人。正确的方法是什么?

uikit ios ios-animations

5
推荐指数
0
解决办法
246
查看次数

标签 统计

ios ×1

ios-animations ×1

uikit ×1