Как сделать снимок экрана UITableView с несколькими строками CollectionView в iOS 13, используя Swift 4 - PullRequest
0 голосов
/ 03 августа 2020

Здесь у меня CustomUITableView с 5 разделами. 2 ячейки имеют настраиваемый CollectionView. Я использую приведенный ниже код, чтобы сделать снимок экрана, но он сохраняет только частичный снимок экрана, оставшаяся часть отображается как пустой белый экран. В iOS 12 я могу сделать снимок экрана, но в iOS 13 не удается сделать весь снимок экрана. Я проверил вопросы о переполнении стека, связанные с этим. Я не нашел принятых ответов на этот вопрос. Я прикрепил ожидаемый снимок экрана.

Спасибо за вашу помощь.

  1. Я прокручиваю таблицу один раз, чтобы захватить содержимое, так как она работает в iOS 12.

  2. Почему этот код работает в iOS 12, а не в iOS 13? введите описание изображения здесь

  3. Я проверил делегат 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!
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...