拍摄视图的快照,包括导航栏和标签栏

时间:2018-04-22 14:36:25

标签: ios swift uinavigationcontroller uitabbarcontroller uinavigationbar

我正在尝试实现自定义导航控制器转换。转换完成后,fromVC后面应显示toVC,因此效果看起来应该toVC显示在fromVC之上,部分覆盖它。< / p>

因此,为了达到效果,我使用了fromView的快照,并在animateTransitioning(using:)方法中将其作为子视图插入containerView

 snapshot = fromVC.view.snapshotView(afterScreenUpdates: false)
 containerView.addSubview(self.snapshot!)

但问题是此快照不包含navigation bartab bar。我找到了一些建议使用UIGraphicsGetImageFromCurrentImageContext()的答案,但这会返回UIImage。我需要快照为UIView,以便将其作为子视图插入containerView。我可以使用它并使用UIView手动创建UIImageView并将其作为子视图插入,但我担心,这对过渡来说太“重”了。

如果您知道如何实现这一目标,我将非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

这将快照并解包根视图,其中包括状态栏以外的所有内容:

guard let snap = UIApplication.shared.keyWindow!.snapshotView(afterScreenUpdates: true) else {
    return  
}

答案 1 :(得分:1)

由于fromVC目前在屏幕上,为什么不这样做:

let snapshot = UIScreen.main.snapshotView(afterScreenUpdates: false)

这将拍摄整个屏幕的快照,包括navigationBartabBar以及statusBar