我有一个具有低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选项我能看到此工作的唯一方法是,如果我在VC中的viewDidAppear中执行淡入效果,而在UIViewControllerAnimatedTransitioning中执行淡出效果。觉得坏男人。正确的方法是什么?