我正在尝试实现自定义导航控制器转换。转换完成后,fromVC
后面应显示toVC
,因此效果看起来应该toVC
显示在fromVC
之上,部分覆盖它。< / p>
因此,为了达到效果,我使用了fromView
的快照,并在animateTransitioning(using:)
方法中将其作为子视图插入containerView
。
snapshot = fromVC.view.snapshotView(afterScreenUpdates: false)
containerView.addSubview(self.snapshot!)
但问题是此快照不包含navigation bar
和tab bar
。我找到了一些建议使用UIGraphicsGetImageFromCurrentImageContext()
的答案,但这会返回UIImage
。我需要快照为UIView
,以便将其作为子视图插入containerView
。我可以使用它并使用UIView
手动创建UIImageView
并将其作为子视图插入,但我担心,这对过渡来说太“重”了。
如果您知道如何实现这一目标,我将非常感谢您的帮助。
答案 0 :(得分:3)
这将快照并解包根视图,其中包括状态栏以外的所有内容:
guard let snap = UIApplication.shared.keyWindow!.snapshotView(afterScreenUpdates: true) else {
return
}
答案 1 :(得分:1)
由于fromVC
目前在屏幕上,为什么不这样做:
let snapshot = UIScreen.main.snapshotView(afterScreenUpdates: false)
这将拍摄整个屏幕的快照,包括navigationBar
,tabBar
以及statusBar