J'ai une application qui affiche les endroits où l'utilisateur a marché sur un MKMapView. Lorsque l'utilisateur quitte l'affichage de la carte, l'application saisit l'écran et enregistre l'image sur le disque. Jusqu'à cette année, cette méthode a toujours été couronnée de succès. Avec iOS 11.0, la capture d'écran est une image vide. Je ne reçois aucune notification de xcode indiquant qu'il y a eu des changements et que j'ai besoin d'ajuster le code. Il est intéressant de noter que les captures d'écran à partir de pages de texte sont encore saisies et enregistrées avec succès.iOS 11 ne capture pas l'écran de MKMapView
Est-ce que quelqu'un a rencontré le même problème et a obtenu la solution?
Le code qui a toujours réussi jusqu'à jusqu'à maintenant, est:
override func viewWillDisappear(_ animated: Bool) {
//Set the full file name under which the track will be saved.
let fileBaseName = self.imageName.appending(String(describing: (self.display?.trackDate)!))
let fileFullName = fileBaseName.appending(".png")
//Check if the image already has been saved
if !AuxiliaryObjects.shared.getImageFileName(with: fileFullName) {
//Create the sizes of the capture
let screenRect = self.trackMapView.frame
let screenSize = screenRect.size
let screenScale = UIScreen.main.scale
var grabRect = self.trackMapView.convertRegion(self.mapRegion, toRectTo: self.view)
var heightAdjustment : CGFloat = 0.0
//Grab the image from the screen
UIGraphicsBeginImageContextWithOptions(screenSize, false, screenScale)
self.trackMapView.drawHierarchy(in: screenRect, afterScreenUpdates: true)
let myImage = UIGraphicsGetImageFromCurrentImageContext()
grabRect.origin.x *= (myImage?.scale)!
grabRect.origin.y *= (myImage?.scale)!
grabRect.size.width *= (myImage?.scale)!
grabRect.size.height *= (myImage?.scale)!
let grabImage = (myImage?.cgImage)!.cropping(to: grabRect)
let mapImage = UIImage(cgImage: grabImage!)
UIGraphicsEndImageContext()
AuxiliaryObjects.shared.save(image: mapImage, with: fileFullName, and: self.imageName)
self.display?.displayImage = AuxiliaryObjects.shared.getImage(with: fileFullName, with: self.tableImageRect)!
} else {
self.display?.displayImage = AuxiliaryObjects.shared.getImage(with: fileFullName, with: self.tableImageRect)!
}
}