【发布时间】:2017-03-04 10:37:30
【问题描述】:
我想捕获一个带有子视图的视图。我正在使用此代码来捕获屏幕:
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 和子视图捕获所有内容。第二个代码捕获没有子视图的视图。我错过了什么?
【问题讨论】:
-
您要捕获的所有子视图都在屏幕上可见?
-
是的,他们是。我想我会在屏幕截图中隐藏我不想要的视图,然后再放回去。
标签: ios swift uiview calayer screen-capture