我想捕獲一個視圖及其子視圖。我正在使用此代碼捕獲屏幕: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