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 ...
随机推荐
- Swift 学习笔记(四)
116.使用可选链式调用代替强制展开 通过在想调用的属性.方法.或下标的可选值(optional value)后面放一个问号(?),可以定义一个可选链.这一点很像在可选值后面放一个叹号(!)来强制展开 ...
- selenuim,qtp,loadrunner,jmeter有何区别,想学个脚本语言python和测试工具应该从哪里入门呢。
selenium和qtp是 功能的自动化测试,loadrunner和jmeter是性能的自动化测试 selenium要求代码能力比较高,适合用python,QTP一般用VBS,loadrunner一般 ...
- js框架——angular.js(6)
1. ng-class 这个指令是用来绑定一个或者多个css代码.它的值一般是一个表达式,也可以是函数什么的,只要返回的确实是一个类的名字就可以—— ng-class="nextPageDi ...
- acm课程练习2--1005
题目描述 Mr. West bought a new car! So he is travelling around the city.One day he comes to a vertical c ...
- 学习笔记——门面模式Facade
门面模式,其实在我们不经意间已经使用了此设计模式.当我们需要将两个子系统,合并对外提供一个大的接口时,我们使用的就是门面模式.对外,子系统的接口是不可见的,只有我们的门面在.
- 关于this指针理解
1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将 ...
- Json.net对数据的解析
在官网下载Json.net文件后,解压完将Net20下面的DLL复制到Assets目录下. using UnityEngine; using System.Collections; using New ...
- ViewPager滑动标签-PagerSlidingTabStrip的使用
有篇博客写的已经非常详细,所以不再写了.主要在于导入这个Library,导入Library看自己的笔记 博客地址:http://doc.okbase.net/HarryWeasley/archive/ ...
- SQL Server 索引维护sql语句
使用以下脚本查看数据库索引碎片的大小情况: 复制代码代码如下: DBCC SHOWCONTIG WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS 以 ...
- 9、外观模式(Facade)
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口 ...