WebView图片自适应屏幕

前言

记得曾经有好多人问过我webview加载到的图片太大了,超过了屏幕的宽度,怎么办呢?在笔者写这篇文章之前,也没有真正去验证过是否可行,只是告诉大家通过JS去设置css样式。

今天,也在segmentFault上看到有人也提了这样一个问题,因此决定亲自去测试一下,并分享给大家!

HTML代码

1

2

3

4

5

6

7

8

9

10

11

12

13

 

<html>

  <head></head>

  <body>

     <h1>Test Img how to auto fit webview</h1>

     <img src="http://pic.nipic.com/2007-12-15/2007121519169400_2.jpg"></img>

     <h2>Another image</h2>

     <img src="http://www.zg2sc.cn/upfile/pic/2014/05/14/5f80fc3a258940998f921953269d1960141058011295091_163227633232_2.jpg"></img>

     <h2>Third image</h2>

     <img src="http://www.jydoc.com/uploads/jydoc/p35501/20091292046379677801.jpg"></img>

  </body>

</html>

 

适应前图片太大

在网上随便找了几张大图,在适应之前,图片是远远大过屏幕的大小的,我们这里通过JS来实现图片自适应大小。在适应屏幕大小之前的效果图如下:

如何通过js实现图片自适应屏幕呢?

适应后图片显示合适

图片自适应后的效果图如下:

我们只需要在webview的代理中实现注入js代码来设置图片的css就可以了:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

- (void)webViewDidFinishLoad:(UIWebView *)webView {

  NSString *js = @"function imgAutoFit() { \

     var imgs = document.getElementsByTagName('img'); \

     for (var i = 0; i < imgs.length; ++i) {\

        var img = imgs[i];   \

        img.style.maxWidth = %f;   \

     } \

  }";

  js = [NSString stringWithFormat:js, [UIScreen mainScreen].bounds.size.width - 20];

  

  [webView stringByEvaluatingJavaScriptFromString:js];

  [webView stringByEvaluatingJavaScriptFromString:@"imgAutoFit()"];

}

 

当然,我们这里获取了屏幕的宽度,然后设置成图片的最大宽度为屏幕的宽度-20。

最后

如果我的问题不清楚,可以到https://segmentfault.com/q/1010000002693677看看问题,当然这里只是一种方式来实现,其实还有很多的方式可以实现的,不过都需要依靠JS来实现的。

比如,我们可以通过JS获取所有的图片的URL然后本地去加载图片,将图片裁剪成适应后应该的图片的大小,这样既可以缓存到本地,又可以自适应。

源代码

请大家到我的GITHUB下载DEMO:WebViewImgAutoFit

喜欢就star一下!

时间: 2024-08-30 20:03:33

WebView图片自适应屏幕的相关文章

Android中WebView图片实现自适应的方法_Android

本文实例讲述了Android中WebView图片实现自适应的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: WebSettings ws = tv.getSettings(); 加上这个属性后,html的图片就会以单列显示就不会变形占了别的位置 ws.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //让缩放显示的最小值为起始 webView.setInitialScale(5); // 设置支持缩放 webSettin

html5-手机网页中,图片按钮自适应屏幕大小沉底

问题描述 手机网页中,图片按钮自适应屏幕大小沉底 HTML5做手机网页,现在需要将一排4个按钮沉底,网页已经自适应屏幕大小宽和高都100%, 为什么我用百分比设置的时候,要达到百分之一百多,在苹果5,6,6P模式下都蛮好, 到苹果4就不行.有什么快速方便的解决办法 解决方案 手机网页屏幕自适应获取手机屏幕大小和图片自动适应大小

Android WebView自适应屏幕宽度代码

// 让网页自适应屏幕宽度  代码如下 复制代码 WebSettings webSettings= webView.getSettings(); webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); LayoutAlgorithm是一个枚举,用来控制html的布局,总共有三种类型: NORMAL:正常显示,没有渲染变化. SINGLE_COLUMN:把所有内容放到WebView组件等宽的一列中. NARROW_COLUMNS

Android中WebView图片实现自适应的方法

本文实例讲述了Android中WebView图片实现自适应的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下:WebSettings ws = tv.getSettings(); 加上这个属性后,html的图片就会以单列显示就不会变形占了别的位置 ws.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //让缩放显示的最小值为起始 webView.setInitialScale(5); // 设置支持缩放 webSetting

移动Web中图片自适应的两种JavaScript解决方法

  本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集,这种文章只需要左右滑动浏览,最好的体验是让图片缩放显示在屏幕有效范围内,防止图片太大导致用户需要滑动手指移动图片来查看这种费力气的事情,用户体验大大降低.二是图文混排的文章,图片最大宽度不超过屏幕宽度,高度可以auto.这两种情况在项目中很常见.另外,有人说做个图片切割工具,把图片尺寸比例都设定

【IOS-COCOS2D-X 游戏开发之十六】配置你的COCOS2DX项目编译后的ANDROID自动使用(-HD)高清图&amp;设置ANDROID自适应屏幕、缩放比例方法!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/799.html 本篇主要介绍Cocos2dx项目开发过程中或者说项目务必遇到的一些知识点(ps.貌似Himi博客写的都是务必的 :tx:  Himi认为写别人没写的才更容易吸引人不是-) OK,不多说废话,第一个介绍的是修改项目配置让你的Android项目支持自适应屏幕:其实关于Android项目自适应屏幕这个问题

Markdown+Bootstrap图片自适应属性的例子

Markdown是一个很好的标记语言,越来越流行作为编辑器的语法,Bootstrap是一个前端框架,那么问题来了,Markdown的图片标记如:![alt](url),在页面上通常会转换成html,这个时候如何给图片加Bootstrap的图片自适应属性.img-responsive? 如:<img alt="武汉光谷" src="/uploads/2016/05/guang-gu.jpg" class="img-responsive">

Markdown+Bootstrap图片自适应属性详解_javascript技巧

Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不超过十个,这种相对于更为复杂的 HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果. 使用 Markdown 的优点 1.专注你的文字内容而不是排版样式,安心写作. 2.轻松的导出 HTML.PDF 和本身的 .md 文件.

手机浏览器图片自适应高度问题解决办法

最近做PC站点的手机版,发现一个问题,图片在手机浏览器中显示效果有问题,宽度可以自动适应了,但是高度无法自动使用,调整css也没用,后来使用PHP正则替换的方式解决了手机浏览器图片自适应高度的问题. 一般情况下,解决手机浏览器自适应宽度和高度的方式是使用如下css即可: .content img{   max-width:100%;   height:auto; } 但是网页中图片的img标签是这样的: <img alt="湖北省第25届摄影艺术展" src="h/20