42 votes

UIImage de CALayer - SDK iPhone

Dans mon application, j'ai créé un CALayer (avec quelques sous-couches - le CALayer est composé de formes ajoutées comme sous-couches).

J'essaie de créer un UIImage que je pourrai télécharger sur un serveur (j'ai le code pour cela). Cependant, je ne peux pas comprendre comment ajouter le CALayer à un UIImage .

Est-ce possible? Tout conseil serait excellent et très apprécié.

Merci beaucoup, Brett

112voto

Todd Yandell Points 8515

On dirait que vous voulez rendre votre calque en UIImage. Dans ce cas, la méthode ci-dessous devrait faire l'affaire. Ajoutez-le simplement à votre vue ou à votre classe de contrôleur, ou créez une catégorie sur CALayer.

 - (UIImage *)imageFromLayer:(CALayer *)layer
{
  UIGraphicsBeginImageContext([layer frame].size);

  [layer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();

  UIGraphicsEndImageContext();

  return outputImage;
}
 

18voto

Ömer Faruk Gül Points 396

La réponse de Todd est correcte, mais pour les écrans rétiniens, il devrait y avoir une petite différence:

 - (UIImage *)imageFromLayer:(CALayer *)layer
{

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
        UIGraphicsBeginImageContextWithOptions([layer frame].size, NO, [UIScreen mainScreen].scale);
    else
        UIGraphicsBeginImageContext([layer frame].size);

    [layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return outputImage;
}
 

Prograide.com

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.

Powered by:

X