Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自定义UIViewController转换上的UIView快照_Ios_Swift - Fatal编程技术网

Ios 自定义UIViewController转换上的UIView快照

Ios 自定义UIViewController转换上的UIView快照,ios,swift,Ios,Swift,我正在为我的应用程序创建自定义转换,但当我尝试创建目标视图的快照时,它始终显示为一个空白的白色矩形。重要的是,我注意到这是一个自定义的push转换,而不是视图的模式表示。以模式显示时,快照似乎正常工作。这是自定义推送/弹出转换的正常行为吗 我编写的代码如下: func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { guard let toViewController =

我正在为我的应用程序创建自定义转换,但当我尝试创建目标视图的快照时,它始终显示为一个空白的白色矩形。重要的是,我注意到这是一个自定义的
push
转换,而不是视图的模式表示。以模式显示时,快照似乎正常工作。这是自定义
推送
/
弹出
转换的正常行为吗

我编写的代码如下:

func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
    guard let toViewController = transitionContext.viewController(forKey: .to) as? CultureViewController else {
        return
    }

    let containerView = transitionContext.containerView
    let finalFrame = transitionContext.finalFrame(for: toViewController)

    let snapshot = toViewController.view.snapshotView(afterScreenUpdates: true)
    snapshot?.frame = UIScreen.main.bounds
    containerView.addSubview(snapshot!)

    toViewController.view.transform = CGAffineTransform(translationX: 0, y: toViewController.view.bounds.height)
    //containerView.addSubview(toViewController.view)

    let duration = transitionDuration(using: transitionContext)
    UIView.animateKeyframes(withDuration: duration, delay: 0, options: .calculationModeCubic, animations: { 
        UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 1, animations: { 
            toViewController.view.frame = finalFrame
        })
    }, completion: { _ in
        transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
    })
}

在呈现视图之前对其进行快照,例如在调用
containerView.addSubview(toViewController.view)
之前进行转换,会根据返回一个空白视图

如果当前视图尚未呈现,可能是因为它尚未出现在屏幕上,则快照视图没有可见内容


你能把包含这个片段的整个类都发布出来吗?仍然看到这个问题。