我想捕获一个视图及其子视图。我正在使用此代码捕获屏幕:Swift:如何保存视图的子视图截图?
let view = self.faceTrackerContainerView
UIGraphicsBeginImageContext(CGSizeMake(view.bounds.size.width, view.bounds.size.height))
UIGraphicsGetCurrentContext()!
self.view?.drawViewHierarchyInRect(view.frame, afterScreenUpdates: true)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
这些代码捕获整个屏幕,包括位于视图前方的按钮。我尝试了这些代码,但它只能捕获主视图中不包括其子视图:
let view = self.faceTrackerContainerView
let scale = UIScreen.mainScreen().scale
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, scale);
view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
我从这里也试过snapshotViewAfterScreenUpdates(true)
,但我不知道如何实现它。我在视图下方有一个collectionView,在视图顶部有一个按钮(两者都不在视图中)。第一个代码用按钮,collectionView和子视图捕获所有内容。第二个代码捕获没有子视图的视图。请让我知道我错过了什么,或者我还能提供什么。谢谢!
想要捕获的所有子视图都可以在屏幕上看到吗? – BaSha
是的,他们是。我想我只是隐藏我不想在屏幕截图中看到的视图,然后重新放入。 – Vinz