【问题标题】:Convert UIWebview contents to a UIImage将 UIWebview 内容转换为 UIImage
【发布时间】:2010-10-25 22:03:47
【问题描述】:

我正在使用 UIWebView 来显示 HTML 格式的文本。我没有加载网页,只是向 UIWebView 提供了一串 HTML。

现在我想在屏幕上为这个 UIWebView 设置动画,实际上是其中的几个(一次 2-10 个)。 UIWebView 有点重,虽然我还没有尝试过,但我正在做最坏的打算。 (我不认为这是过早的优化,我几乎肯定这将是一个问题)

为了解决这个问题,我想我可以将 UIWebViews 的内容转换为 UIImages 并为它们设置动画。

所以,我的问题是:

  1. 如何转换 UIWebview 内容到 UIImage (或 CGImageRef)?
  2. 我的 UIWebViews 有 透明的免费场地,将 透明度将延续到 UIImage?

感谢您的任何建议

【问题讨论】:

    标签: iphone objective-c cocoa-touch core-animation


    【解决方案1】:

    我可能是错的,但如果您设置 CoreAnimation 的缓存参数,操作系统将为您处理此优化。

    例如

    [UIView setAnimationTransition:transition forView:self.view cache:YES];
    

    【讨论】:

    • 我正在做一个路径动画,所以我不能使用 UIView 便利方法,但它们可能是(可能是)在 CA 中工作类似的东西......
    【解决方案2】:
    UIGraphicsBeginImageContext(webview.bounds.size);
    [webview.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    

    如果 webview 尺寸很大,您可能会遇到问题,因为 webview 使用 CATiledLayer,由于内存原因不会绘制所有内容。

    图像将包含透明度

    【讨论】:

    • 谢谢。我的 webviews 只是简单的单行文本,所以我认为这不会成为问题。我猜图像的尺寸是屏幕上 webview 的尺寸?
    • 您可能需要在 webview 加载后调用 sizeToFit: 以获取 webview 内容的确切大小
    • 只是出于好奇,为什么要将单行文本显示为 UIWebView?
    • 我问了一个关于如何处理大型 webview 维度的后续问题。可以在这里找到:stackoverflow.com/q/4475397/516731
    • 现在,如果您需要在该图像中放入 webview 以外的其他内容,您会怎么做?先转成图像再聚合还是有更优雅的方式?
    猜你喜欢
    • 2011-05-27
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2012-07-15
    • 2013-01-01
    • 2015-12-12
    相关资源
    最近更新 更多