Здесь у меня CustomUITableView с 5 разделами. 2 ячейки имеют настраиваемый CollectionView. Я использую приведенный ниже код, чтобы сделать снимок экрана, но он сохраняет только частичный снимок экрана, оставшаяся часть отображается как пустой белый экран. В iOS 12 я могу сделать снимок экрана, но в iOS 13 не удается сделать весь снимок экрана. Я проверил вопросы о переполнении стека, связанные с этим. Я не нашел принятых ответов на этот вопрос. Я прикрепил ожидаемый снимок экрана.
Спасибо за вашу помощь.
Я прокручиваю таблицу один раз, чтобы захватить содержимое, так как она работает в iOS 12.
Почему этот код работает в iOS 12, а не в iOS 13? введите описание изображения здесь
Я проверил делегат UIScreenshotService, который на самом деле создает PDF-скриншоты содержимого вашего окна, но он не дает изображения.
func scrollWalletTableToDown() {
DispatchQueue.main.async {
let indexPath = IndexPath(row: 0, section: 4)
self.healthTableView.scrollToRow(at: indexPath, at: .bottom, animated: true)
}
self.healthTableView.reloadData()
}
func scrollWalletTableToTop() {
DispatchQueue.main.async {
let indexPath = IndexPath(row: 0, section: 0)
self.healthTableView.scrollToRow(at: indexPath, at: .top, animated: false)
}
self.healthTableView.reloadData()
}
class func snapshot(contentView: CustomTableView) -> UIImage {
UIGraphicsBeginImageContext(contentView.contentSize)
let savedContentOffset = contentView.contentOffset
let savedFrame = contentView.frame
contentView.contentOffset = CGPoint.zero
contentView.frame = CGRect(x: 0, y: 85, width:
contentView.contentSize.width, height:
contentView.contentSize.height)
contentView.layer.render(in: 3()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
contentView.contentOffset = savedContentOffset
contentView.frame = savedFrame
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
return image!
}