我希望捕获一个视图及其子视图。我正在使用以下代码来捕获屏幕:
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和子视图的所有内容。第二段代码捕获了没有子视图的视图。我错过了什么吗?