En primer lugar, me gustaría dar las gracias a Sergio ... su respuesta me empezó pero yo pensé en compartir una parte del código que yo no encontrar obvio que tenía que escribir para que funcione:
Aquí es cómo hacer una miniatura de una página sin tener que aparece:
// Your width and height can be whatever you like, but if you want this to render
// off screen, you need an x and y bigger than the superview's width and height
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(largerScreenDimension, largerScreenDimension, largerScreenDimension, largerScreenDimension)];
[self.view addSubview:webView]; // UIWebViews without an assigned superview don't load ever.
webView.delegate = self; // or whoever you have implement UIWebViewDelegate
webView.scalesToFit = YES; // This zooms the page appropriately to fill the entire thumbnail.
[webView loadRequest:[NSURLRequest requestWithURL:url]];
luego implementar esto en su delegado:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
UIGraphicsBeginImageContext(webView.bounds.size);
[webView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *webViewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *thumbnailData = UIImagePNGRepresentation(webViewImage);
[webView removeFromSuperview];
}
Finalmente, para mostrar en esta miniatura te Necesito algo como:
thumbnailImageView.image = [UIImage imageWithData:thumbnailData];
Como bono cosa que voy a mencionar, quería varias imágenes en miniatura que se generen a la vez. Encontré usar objc_setAssociatedObject()
y objc_getAssociatedObject()
para ser muy útil con el seguimiento de qué webView estaba cargando qué miniatura. Sin embargo, entrar en detalles sobre cómo funcionó está más allá del alcance de esta pregunta.
Qué le gusta hacer esto en iOS? –