代码之家  ›  专栏  ›  技术社区  ›  Dmitry Khalatov

uiwebview-独立于文本缩放图像

  •  1
  • Dmitry Khalatov  · 技术社区  · 15 年前

    我想在iPhoneUIWebView中显示HTML。我的HTML看起来像

    text
    text
    <img src.../>
    text
    text
    

    如何使组件(通过javascript或目标C)适合窗口的图像大小——即文本大小保持不变,但图像将按比例缩小/放大以防止水平滚动?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  3
  •   duncanwilcox    15 年前

    您必须知道HTML是什么样子的,因为这样做的唯一方法是操作DOM。

    在Mac上,您可以通过目标C访问DOM,但iPhone上没有该API。幸运的是,您可以通过uiwebview javascript网桥实现同样的功能。

    假设HTML如下所示:

    text
    text
    <img id="myimage" src="..." height="150" width="150"/>
    text
    text
    

    在HTML中添加类似于此的JS函数:

    <script>
    function enlargeImage(w, h)
    {
       var img = document.getElementById("myimage");
       img.width = w;
       img.height = h;
    }
    </script>
    

    然后你简单地称之为:

    [webView stringByEvaluatingJavaScriptFromString:@"enlargeImage(300, 300)"];  
    

    唯一需要注意的是,您应该等待HTML完全通过 webViewDidFinishLoad 委托回调。

    很明显,你也可以走捷径,比如:

    [webView stringByEvaluatingJavaScriptFromString:
        @"document.getElementById("myimage").width = 300;"];
    [webView stringByEvaluatingJavaScriptFromString:
        @"document.getElementById("myimage").height = 300;"];
    
        2
  •  0
  •   matpol    15 年前

    您可以使用百分比或ems来调整CSS中图像的大小。这意味着您需要将图像的像素大小转换为百分比或ems。您还应该使用jpeg,因为它们的缩放效果更好。

    这个 article 谭先生是我在这个问题上的最爱,他几乎解释了整个过程。