Swift 3 / ¿Por qué la instantánea de snapshotView aparece en blanco en el iPhone 7 Plus Simulator?

Estoy usando el siguiente código para crear una transición de menu personalizada. He pasado las últimas dos horas tratando de averiguar por qué la instantánea aparece en blanco (utilizando el simulador iPhone 7 Plus solamente). Pero cuando quería crear un video para convertirlo en un gif para este hilo, funcionó en mi iPhone 6S Plus .

Actualización: funciona también en el iPhone 6S Simulator. Pero aún no en 7 Plus.

import UIKit class PresentMenuAnimator : NSObject { } extension PresentMenuAnimator : UIViewControllerAnimatedTransitioning { func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { return 0.6 } func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { let fromVC = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from) let toVC = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to) let containerView = transitionContext.containerView containerView.insertSubview((toVC?.view)!, belowSubview: (fromVC?.view)!) // replace main view with snapshot let snapshot = fromVC?.view.snapshotView(afterScreenUpdates: false) snapshot?.tag = MenuHelper.snapshotNumber snapshot?.isUserInteractionEnabled = false snapshot?.layer.shadowOpacity = 0.7 containerView.insertSubview(snapshot!, aboveSubview: (toVC?.view)!) fromVC?.view.isHidden = true UIView.animate( withDuration: transitionDuration(using: transitionContext), animations: { snapshot!.center.x += UIScreen.main.bounds.width * MenuHelper.menuWidth }, completion: { _ in fromVC?.view.isHidden = false transitionContext.completeTransition(!transitionContext.transitionWasCancelled) } ) } } 

iPhone 6S Plus (dispositivo físico) iOS 10

introduzca la descripción de la imagen aquí

iPhone 7 Plus (simulador) iOS 10

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

¿Por qué está en blanco la instantánea del simulador?

Proyecto de testing GitHub

Agregue esta extensión UIView ,

 public extension UIView { public func snapshotImage() -> UIImage? { UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0) drawHierarchy(in: bounds, afterScreenUpdates: false) let snapshotImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return snapshotImage } public func snapshotView() -> UIView? { if let snapshotImage = snapshotImage() { return UIImageView(image: snapshotImage) } else { return nil } } } 

Actualiza tu siguiente código,

 let snapshot = fromVC?.view.snapshotView(afterScreenUpdates: false) 

con,

 let snapshot = fromVC?.view.snapshotView() 

Árbitro