8
votes

UiImage d'une région d'UIView

J'essaie de couper une région d'un uiview , dans un uiImage pour une réutilisation ultérieure.

J'ai élaboré ce code de certains extraits: xxx

'Voir' est le uIView que je suis coupant et _finalimage est le uiimage Je veux.

Le code fonctionne sans problème, cependant est un peu lent. Je crois que certaines performances pourraient être gagnées en prenant juste la partie de l'écran directement à l'étape a.

Je recherche quelque chose comme Renderincontext: Sassrect: ou ou ou UigraphiquegetimagefromcurrentImagecontextextextextex () hehe.

Je n'ai encore rien trouvé encore :(, aidez-moi s'il vous plaît si vous connaissez une alternative.


1 commentaires

Pourriez-vous reformater? difficile à lire


3 Réponses :


0
votes

Vous pouvez essayer de rasteriser l'UIView d'abord:

view.layer.shouldRasterize = YES;


1 commentaires

Le contexte "principal" que je pense. Je crée un nouveau contexte sur le fil principal. : S



7
votes

Cette méthode se clipse une région de la vue en utilisant moins de mémoire et de la Temps CPU: xxx


0 commentaires

0
votes

Version SWIFT de la solution @ Phix23. Ajout d'échelle

func clippedImageForRect(clipRect: CGRect, inView view: UIView) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(clipRect.size, true, UIScreen.mainScreen().scale);
    let ctx = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(ctx, -clipRect.origin.x, -clipRect.origin.y);
    view.layer.renderInContext(ctx!)
    let img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img
}


0 commentaires