我正在学习如何在View Controller之间创建自定义(交互)过渡。我想以模态呈现时创建了安装程序。演示可以进行,但是动画结束后,解雇会以黑屏显示。
我注意到了一些奇怪的事情:
sting_to_test = "My String"
filtered_data = my_serie.isin(sting_to_test)
正如我期望的那样,func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let fromV = transitionContext.view(forKey: .from)
let toV = transitionContext.view(forKey: .to)
let fromVC = transitionContext.viewController(forKey: .from)
let toVC = transitionContext.viewController(forKey: .to)
//....
}
和fromV
引用了相同的视图(在调试器中检查,地址相同)。但是,fromVC.view
是toV
,而nil
具有一些(好像)有效地址才能显示有效视图。
那怎么可能? 他们不应该总是使用相同的值吗?
答案 0 :(得分:0)
如果要访问toView
控制器的视图,请使用
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
if let toVC = transitionContext.viewController(forKey: .to) {
let toView = toVC.view.snapshotView(afterScreenUpdates: true)
}
//rest of code
}
根据文档
此方法非常有效地捕获当前渲染的外观 视图并使用它来构建新的快照视图。
希望有帮助