UIImage à partir d'une UIView créé avec snapshotViewAfterScreenUpdates:

Est-il possible d'obtenir une UIImage à partir d'une UIView créé avec snapshotViewAfterScreenUpdates?

UIView returned from snapshotViewAfterScreenUpdates a l'air bien lorsqu'il est ajouté une sous-vue, mais le texte suivant génère une image en noir:

UIView *snapshotView = [someView snapshotViewAfterScreenUpdates:YES]; 
UIImage *snapshotImage = [self imageFromView:snapshotView]; 

- (UIImage *)imageFromView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
    // [view.layer renderInContext:UIGraphicsGetCurrentContext()]; // <- same result...
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return img;
}

il est bien sûr possible d'obtenir l'image sans compter sur snapshotViewAfterScreenUpdates:

UIImage *snapshotImage = [self imageFromView:someView];

malheureusement, lors de la capture d'une vue complexe,drawViewHierarchyInRect ne peut pas égaler la vitesse de snapshotViewAfterScreenUpdates. J'espérais qu'il serait plus rapide pour obtenir le UIImage d'un point de vue créé par snapshotViewAfterScreenUpdates est-ce possible?

25
demandé sur carton 2013-11-26 01:26:57
la source

1 ответов

La réponse semble être NO et Apple documentation implicitement confirme ceci:

si vous souhaitez appliquer un effet graphique, tel que flou, à un snapshot, utilisez le drawViewHierarchyInRect:afterScreenUpdates: méthode plutôt.

il est intéressant de noter que le Engager la mise en Œuvre de l'INTERFACE utilisateur sur iOS session de WWDC13 listes snapshotViewAfterScreenUpdates comme la méthode la plus rapide, mais utilise drawViewHierarchyInRect dans le code de l'exemple.

20
répondu carton 2013-11-26 01:47:20
la source

Autres questions sur