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