当webview大于屏幕时,将UIWebview内容转换为UIImage [英] Convert UIWebview contents to a UIImage when the webview is larger than the screen

查看:97
本文介绍了当webview大于屏幕时,将UIWebview内容转换为UIImage的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

非常类似于此问题(以及这个答案),我正试图从webview中取出UIImage。到目前为止,我正在使用答案中建议的代码,具体来说:

Very similar to this question (and also this answer), I'm trying to make an UIImage out from a webview. So far I'm using the code suggested in the answer, specifically:

UIGraphicsBeginImageContext(webview.bounds.size);
[webview.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

但是,当webview的内容大于屏幕时,生成的图像不完整,缺少补丁。关于如何解决这个问题的任何想法?

However, when the contents of the webview are larger than the screen, the resulting images are not complete and have missing patches. Any ideas on how to fix this?

推荐答案

我得到了答案:

您必须在创建图像之前将Webview的框架设置为完整的内容大小。之后只需将大小设置回原点:

You have to set the frame of the Webview to the full content size just before you create the image. After this just set the size back to origin:

+ (UIImage *) imageFromWebView:(UIWebView *)view
{
    // tempframe to reset view size after image was created
    CGRect tmpFrame         = view.frame;

    // set new Frame
    CGRect aFrame               = view.frame;
    aFrame.size.height  = [view sizeThatFits:[[UIScreen mainScreen] bounds].size].height;
    view.frame              = aFrame;

    // do image magic
    UIGraphicsBeginImageContext([view sizeThatFits:[[UIScreen mainScreen] bounds].size]);

    CGContextRef resizedContext = UIGraphicsGetCurrentContext();
    [view.layer renderInContext:resizedContext];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    // reset Frame of view to origin
    view.frame = tmpFrame;
    return image;
}

这篇关于当webview大于屏幕时,将UIWebview内容转换为UIImage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆