Mon application iPad peut effectuer une capture d'écran de tous les contrôleurs de vue affichés à l'exception d'un VC scenekit 3D.Capture d'écran avec des contrôleurs de vues mixtes, kit de scène 3D, uiwebkit
Voici mon code pour capturer l'écran
@IBAction func screenImage(sender: UIBarButtonItem) {
//Create the UIImage
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let screenshot: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//Save it to the camera roll
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
//save to user documents access via iTunes
CaptureOutput.saveImage(screenshot)
}
J'ai mis le VC capture d'écran au niveau le plus élevé atIndex, tous les autres VC sont moins atIndex que cela.
du programme
pris avec mon téléphone.
Dois-je forcer le rendu du kit de scène? Si c'est le cas, comment? De l'aide?
Il y a un bug confirmé (numéro radar 17851775)
Et ils ont aussi fourni une solution de contournement. Ils ont suggéré qu'au lieu de:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
/* Use im */
Je fais
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
L'inverse, en fait. Au lieu de renderInContext, appelez drawViewHierarchy. – Mercurial