【问题标题】:In UIViewControllerAnimatedTransitioning the "to ViewController" has view present but "to View" is nil在 UIViewControllerAnimatedTransitioning 中,“to ViewController”存在视图,但“to View”为 nil
【发布时间】:2019-06-27 12:19:30
【问题描述】:

我正在学习如何在视图控制器之间创建自定义(交互式)转换。当我想以模态方式呈现某些东西时,我已经创建了设置。演示工作正常,但动画结束时以黑屏结束。

我注意到了一些奇怪的事情:

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)
    //....
 }

正如我所料,fromVfromVC.view 引用了相同的视图(在调试器中检查,地址相同)。然而toVniltoVC.view 有一些(似乎是)有效地址到有效视图。

这怎么可能? 他们不应该总是符合相同的价值观吗?

【问题讨论】:

    标签: ios swift transition


    【解决方案1】:

    如果你想访问toView 控制器的视图,你会使用

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
            if let toVC = transitionContext.viewController(forKey: .to) {
                let toView = toVC.view.snapshotView(afterScreenUpdates: true)
            }
            //rest of code
        }
    

    根据文档

    此方法非常有效地捕获当前渲染的外观 视图并使用它来构建新的快照视图。

    希望对你有帮助

    【讨论】:

    • 哇,谢谢!它有效,但我知道为什么快照在动画结束时修复了这个 nil 值和黑屏;)
    • @bdolewski :) 编码愉快 :)
    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多