WebView点击图片看大图效果
在webViewDelegate里面添加如下代码:
- 12345678910111213141516171819202122232425
- (void)webViewDidFinishLoad:(UIWebView *)aWebView {//调整字号NSString *str = @"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '95%'";[webView stringByEvaluatingJavaScriptFromString:str];//js方法遍历图片添加点击事件 返回图片个数staticNSString *constjsGetImages =@"function getImages(){\var objs = document.getElementsByTagName(\"img\");\for(var i=0;i<objs.length;i++){\objs[i].onclick=function(){\document.location=\"myweb:imageClick:\"+this.src;\};\};\returnobjs.length;\};";[webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法//注入自定义的js方法后别忘了调用 否则不会生效(不调用也一样生效了,,,不明白)NSString *resurlt = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"];//调用js方法// NSLog(@"---调用js方法--%@ %s jsMehtods_result = %@",self.class,__func__,resurlt);} - 1234567891011121314151617181920212223
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{//将url转换为stringNSString *requestString = [[request URL] absoluteString];// NSLog(@"requestString is %@",requestString);//hasPrefix 判断创建的字符串内容是否以pic:字符开始if([requestString hasPrefix:@"myweb:imageClick:"]) {NSString *imageUrl = [requestString substringFromIndex:@"myweb:imageClick:".length];// NSLog(@"image url------%@", imageUrl);if(bgView) {//设置不隐藏,还原放大缩小,显示图片bgView.hidden = NO;imgView.frame = CGRectMake(10, 10, SCREEN_WIDTH-40, 220);[imgView setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:LOAD_IMAGE(@"house_moren")];}else[self showBigImage:imageUrl];//创建视图并显示图片returnNO;}returnYES;} 创建放大图片的视图
- 123456789101112131415161718192021222324252627282930313233343536373839404142
#pragma mark 显示大图片-(void)showBigImage:(NSString *)imageUrl{//创建灰色透明背景,使其背后内容不可操作bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];[bgView setBackgroundColor:[UIColor colorWithRed:0.3green:0.3blue:0.3alpha:0.7]];[self.view addSubview:bgView];//创建边框视图UIView *borderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH-20, 240)];//将图层的边框设置为圆脚borderView.layer.cornerRadius = 8;borderView.layer.masksToBounds = YES;//给图层添加一个有色边框borderView.layer.borderWidth = 8;borderView.layer.borderColor = [[UIColor colorWithRed:0.9green:0.9blue:0.9alpha:0.7] CGColor];[borderView setCenter:bgView.center];[bgView addSubview:borderView];//创建关闭按钮UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];// [closeBtn setImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal];closeBtn.backgroundColor = [UIColor redColor];[closeBtn addTarget:self action:@selector(removeBigImage) forControlEvents:UIControlEventTouchUpInside];[closeBtn setFrame:CGRectMake(borderView.frame.origin.x+borderView.frame.size.width-20, borderView.frame.origin.y-6, 26, 27)];[bgView addSubview:closeBtn];//创建显示图像视图imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, CGRectGetWidth(borderView.frame)-20, CGRectGetHeight(borderView.frame)-20)];imgView.userInteractionEnabled = YES;[imgView setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:LOAD_IMAGE(@"house_moren")];[borderView addSubview:imgView];//添加捏合手势[imgView addGestureRecognizer:[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinch:)]];} 实现关闭和捏合手势的方法
- 123456789101112
//关闭按钮-(void)removeBigImage{bgView.hidden = YES;}- (void) handlePinch:(UIPinchGestureRecognizer*) recognizer{//缩放:设置缩放比例recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);recognizer.scale = 1;}
效果图如下

<div>
<img width="320.000000" height="300.000000" src="http://114.215.171.217:80/image/f?fileName=null_1436866458461.jpg" onclick="imageClick()">
<script type="text/javascript">
function imageClick(){document.location = "ClickImage:"}
</script>
<br />
</div>
附上我的html代码
http://my.oschina.net/linxiaoxi1993/blog/465905?p={{page}}
WebView点击图片看大图效果的更多相关文章
- ios webview点击图片看大图效果及相应手势操作
下面参考资料有比较详细的解释,在之前的就项目中也有比较好的效果(支持更多手势),可以参考下 参考资料
- ionic中点击图片看大图的实现
在页面上显示了几张图片后,因为是手机端,图片会有点小的感觉,就想着怎么样才能让用户点击小图片看到大图呢,项目中ionic结合angularjs实现了这个功能 1.首先是三张小图上应添加一个函数,当点击 ...
- 点击图片查看大图(纯js)
$(function(){ $(".pimg").click(function(){ var _this = $(this);//将当前的pimg元素作为_this传入函数 img ...
- js+jquery+html实现在三种不通的情况下,点击图片放大的效果
js+jquery+html实现在三种不通的情况下,点击图片放大的效果. 三种情况分别是:图片的父元素宽高固定; 图片的宽高固定; 图片的父元素宽固定,高度不固定 第一种情况:图片的父元素宽高固定 ...
- 基于jquery鼠标点击图片翻开切换效果
基于jquery鼠标点击图片翻开切换效果是一款基于jQuery+CSS3实现的点击图片切换特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=&quo ...
- jQuery插件——imgbox(点击图片查看大图)
需要的资源: 需要对应的js代码和css样式,大家可以通过www.htmldrive.net平台下载,也可以在我文章的底部下载.对应的资源如下,将资源引入页面(别忘了JQuery): 注意:jQuer ...
- [原创]WKWebview点击图片查看大图
大家都知道,WKWebview是没有查看大图的属性或者方法的,所以只能通过js与之交互来实现这一功能,原理:通过js获取页面的图片,把它存放到数组,给图片添加点击事件,通过index显示大图就行了 其 ...
- WKWebview点击图片查看大图
大家都知道,WKWebview是没有查看大图的属性或者方法的,所以只能通过js与之交互来实现这一功能,原理:通过js获取页面的图片,把它存放到数组,给图片添加点击事件,通过index显示大图就行了 其 ...
- JQuery - 点击图片显示大图
效果: 目录结构: 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="De ...
随机推荐
- <link rel="stylesheet" href="3.css"/> 链接方式
<link rel="stylesheet" href="3.css"/> <!doctype html> <html> & ...
- UVALive 2517 Moving Object Recognition(模拟)
题目看上去很吓人,很高端,但其实很简单,不要被吓到,照搬题目的公式就可以了. 方法:用BFS求出最大块和重心,找出题目公式需要的未知量,然后套到题目公式里就可以求出答案了. 代码: #include& ...
- Cloudsim 3.0在myclipse下的安装过程
(1)下载cloudsim 3.0: http://code.google.com/p/cloudsim/downloads/list (2)下载flanaga.jar包 下载地址:http://w ...
- Oracle 使用sql创建表空间及用户
create tablespace OrcalDBNamedb datafile 'C:\OracleDBDirc\OrcalDBNamedb.dbf' size 300m; 创建用户create u ...
- 基于ATmgea8单片机设计的加热控制系统(转)
源:http://blog.163.com/zhaojun_xf/blog/static/3005058020085102562729/ 1 引言 温度是工业生产中主要的被控参数之一,与之相关的各种温 ...
- Abandoned country
Abandoned country Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- CGAffineTransform 放射变换解析 即矩阵变换
转载自;http://www.cocoachina.com/bbs/3g/read.php?tid=151136 矩阵乘法A B相乘要A的列数等于B的行数才有定义,结果是一个 A行B列的矩阵C,C的每 ...
- GB2312转unicode程序(转)
GB2312转unicode程序 #ifndef UNICODE_H #define UNICODE_H #include <string.h> #ifdef __DEFLINUX_ ...
- new/delete 和 new[]/delete[]
浅谈 C++ 中的 new/delete 和 new[]/delete[] 在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 d ...
- Persistent Bookcase
Persistent Bookcase time limit per test 2 seconds memory limit per test 512 megabytes input standard ...