我正在使用故事板呈现模态序列来显示嵌入新导航控制器中的第二个视图。对于动画,我使用部分卷曲。当推送到第二个视图控制器时,转换按预期工作。但是在第二个视图控制器上使用 self.dismiss 会推迟,但第一个视图卡在另一个过渡动画中......因此,有一秒钟,视图按预期显示,但随后再次开始动画并卡在中间动画片。我可以使用显示的视图,所以这似乎是一个显示问题。
我很惊讶这个问题在 8 个月内还没有得到解决。 14.3 中似乎仍然会发生这种情况。 我能找到的唯一解决方法就是在关闭时关闭动画 -
self.presentingViewController!.dismiss(animated: false, completion: nil)
您仍然可以在当前看到部分卷曲动画,但在返回时却看不到。
您可以尝试这个解决方案:
let transition: CATransition = CATransition()
transition.duration = 0.65
transition.timingFunction = CAMediaTimingFunction(name: .easeIn)
transition.type = CATransitionType.moveIn
transition.subtype = CATransitionSubtype.fromBottom
self.view.window?.layer.add(transition, forKey: nil)
dismiss(animated: false, completion: nil)
这样你就可以应用卷曲动画
如果让destinationVC = Storyboard?.instantiateViewController(withIdentifier: "PreviousViewController") { addChild(destinationVC) 目的地VC.view.frame = self.view.frame view.addSubview(destinationVC.view) destinationVC.didMove(toParent: self)
UIView.transition(from: self.view,
to: destinationVC.view,
duration: 0.65,
options: .transitionCurlDown,
completion: { finished in
destinationVC.view.removeFromSuperview()
destinationVC.willMove(toParent: nil)
destinationVC.removeFromParent()
self.dismiss(animated: false)
})
}