Mon code fonctionne très bien pour les dispositifs normaux, mais crée des images floues sur les dispositifs de la rétine.
Quelqu'un sait-il d’une solution à mon problème ?
Mon code fonctionne très bien pour les dispositifs normaux, mais crée des images floues sur les dispositifs de la rétine.
Quelqu'un sait-il d’une solution à mon problème ?
Passer de l'utilisation de UIGraphicsBeginImageContext
de UIGraphicsBeginImageContextWithOptions
(comme indiqué sur cette page). Passer 0,0 échelle (le troisième argument) et vous obtiendrez un contexte avec un facteur d'échelle égal à celui de l'écran.
UIGraphicsBeginImageContext
utilise une échelle fixe facteur de 1.0, de sorte que vous êtes réellement obtenir exactement la même image sur un iPhone 4 que sur les autres iPhones. Je parie que soit l'iPhone 4 est l'application d'un filtre lorsque vous implicitement à l'échelle vers le haut ou juste votre cerveau est de ramasser sur elle étant moins forte que tout autour d'elle.
Donc, je suppose:
#import <QuartzCore/QuartzCore.h>
+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
L'actuel accepté réponse est maintenant hors de date, au moins si vous prenez en charge iOS 7.
Voici ce que vous devez les utiliser si vous ne soutenir iOS7+:
+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0f);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
UIImage * snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snapshotImage;
}
Conformément à cet article, vous pouvez voir que le nouvel iOS7 méthode drawViewHierarchyInRect:afterScreenUpdates:
est plusieurs fois plus rapide que l' renderInContext:
.
Pour améliorer les réponses par @Tommy et @Dima, utiliser la catégorie suivante pour restituer UIView into UIImage avec fond transparent et sans perte de qualité. Travail sur iOS7. (Ou simplement réutiliser cette méthode dans la mise en oeuvre, remplaçant `` référence avec votre image)
Quelques fois drawRect méthode fait problème, donc j’ai obtenu ces réponses plus appropriées. Trop avoir un oeil là-dessus UIImage capturer des UIView, coincé dans la méthode DrawRect
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.