方式是以注入JS代码的方式,遍历所有的图片img标签,然后通过js获取到图片的url地址,然后自己再做点击弹出图片页面和添加捏合手势,代码如下(方法来自网络,从他人出学习来的,原文章地址找不到了...)

H5加载完成之后注入js,获取url,给img添加可点击

-(void)webViewDidFinishLoad:(UIWebView *)webView

{

//这里是js,主要目的实现对url的获取

static NSString * const jsGetImages =

@"function getImages(){\

var objs = document.getElementsByTagName(\"img\");\

var imgScr = '';\

for(var i=0;i

imgScr = imgScr + objs[i].src + '+';\

};\

return imgScr;\

};";

[webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法

NSString *urlResurlt = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"];

mUrlArray = [NSMutableArray arrayWithArray:[urlResurlt componentsSeparatedByString:@"+"]];

if (mUrlArray.count >= 2) {

[mUrlArray removeLastObject];

}

//urlResurlt 就是获取到得所有图片的url的拼接;mUrlArray就是所有Url的数组

//添加图片可点击js

[_webView stringByEvaluatingJavaScriptFromString:@"function registerImageClickAction(){\

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

var length=imgs.length;\

for(var i=0;i

img=imgs[i];\

img.οnclick=function(){\

window.location.href='image-preview:'+this.src}\

}\

}"];

[_webView stringByEvaluatingJavaScriptFromString:@"registerImageClickAction();"];

}

点击img的时候拦截一下获取url

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

//预览图片

if ([request.URL.scheme isEqualToString:@"image-preview"]) {

NSString* path = [request.URL.absoluteString substringFromIndex:[@"image-preview:" length]];

path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"path==%@",path);

[self bigImg:path]; //这个是我自己添加的方法

//path 就是被点击图片的url

return NO;

}

return YES;

}

点击图片调用的方法

-(void)bigImg:(NSString *)imgUrl

{

//背景view

bigImgView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];

bigImgView.backgroundColor = [UIColor blackColor];

[self.view addSubview:bigImgView];

//图片本身

UIImageView *bigimg = [[UIImageView alloc]init];

bigimg.center = CGPointMake(kScreenWidth/2, kScreenHeight/2);

[bigimg sd_setImageWithURL:[NSURL URLWithString:imgUrl]];

//我这里设置的固定高度200;

bigimg.frame = CGRectMake(0, (kScreenHeight-200)/2, kScreenWidth, 200);

[bigImgView addSubview:bigimg];

[bigimg setUserInteractionEnabled:YES];

[bigimg setMultipleTouchEnabled:YES];

// 缩放手势加到图片上

UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)];

[bigimg addGestureRecognizer:pinchGestureRecognizer];

//移动手势加到图片上

UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panView:)];

[bigimg addGestureRecognizer:panGestureRecognizer];

//点击手势加达到大背景

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapView:)];

[bigImgView addGestureRecognizer:tapGestureRecognizer];

}

//处理点击手势

-(void) tapView:(UITapGestureRecognizer *)tapGestureRecognizer

{

[bigImgView removeFromSuperview];

}

// 处理缩放手势

- (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer

{

UIView *view = pinchGestureRecognizer.view;

if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {

view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);

pinchGestureRecognizer.scale = 1;

}

}

//处理拖拉手势

- (void) panView:(UIPanGestureRecognizer *)panGestureRecognizer

{

UIView *view = panGestureRecognizer.view;

if (panGestureRecognizer.state == UIGestureRecognizerStateBegan || panGestureRecognizer.state == UIGestureRecognizerStateChanged) {

CGPoint translation = [panGestureRecognizer translationInView:view.superview];

[view setCenter:(CGPoint){view.center.x + translation.x, view.center.y + translation.y}];

[panGestureRecognizer setTranslation:CGPointZero inView:view.superview];

}

}

ios html5缩小,IOS H5页面图片点击捏合放大缩小相关推荐

  1. iOS端内嵌H5页面 点击a标签无反应

    问题1: iOS端内嵌H5页面,点击a链接无反应 解决: 一般这种问题发生在新窗口打开的情况下,也就是说 target 的值为 _blank 时会发生这个问题,改为 _self即可解决问题.或者iOS ...

  2. 安卓和ios移动端实现H5页面进行强制刷新

    安卓和ios移动端实现H5页面进行强制刷新 定义和用法 onpageshow 事件在用户浏览网页时触发.onpageshow 事件类似于 onload 事件,onload 事件在页面第一次加载时触发, ...

  3. uni-app图片如何设置双指放大缩小

    图片设置双指放大缩小这个功能相对来说比较简单的,是用于官方文档的路径(组件->视图容器->movable-area),movable-area可以做双指放大缩小,并且放大的同时可以左右移动 ...

  4. v-viewer预览图的使用(图片预览旋转/放大缩小/上下切换等)

    前言: 之前项目需求,需要找一个预览图的组件,最开始,找了vue-preview组件.因为vue-preview是直接引入 < vue-preview>这个标签,无法看到对组件里面的图片i ...

  5. H5页面苹果手机点击输入框输入内容时 页面自动放大

    问题:H5页面苹果手机点击输入框输入内容时,页面会自动放大,导致用户体验不好 解决:<meta name="viewport" content="width=dev ...

  6. 微信H5页面隐藏点击右上角的分享功能

    微信H5页面隐藏点击右上角的分享功能 注:H5页面右上角的三个点是微信自带的,所以不能去掉,只是可以隐藏点击后的分享功能 右上角分享功能的显示与隐藏 <script>// 隐藏docume ...

  7. html 图片在一个div中放大缩小效果

    图片放大,缩小也是前端中经常遇到得问题,以下就根据这个需求,做如下示范: <!DOCTYPE html> <html> <head><title>图片放 ...

  8. html5长按保存,iOS UIWebView仿微信H5页面实现长按保存图片功能

    最终实现效果图 选择放这张效果图的时候很是忐忑啊,不知道会不会被和谐掉. 拿到需求之后分析了一下,其实主要功能点就是如何才能通过手指按压位置获取到相应的图片资源.是不是很抓狂,如果考虑到设备适配,谁知 ...

  9. ios html5上架,iOS原生集成H5+详细流程

    iOS原生集成H5+ 集成方式 独立应用方式集成 Widget方式集成 WebView方式集成 可以打开官方链接: 选择 5+SDK -> 5+SDK集成 -> 平台 下查看集成方式 独立 ...

最新文章

  1. C语言求3x3数组对角线元素之和
  2. mysql中数据表如何关联_mysql 如何导入/导出2个关联表中的数据
  3. 依赖注入在 dotnet core 中实现与使用:2 使用 Extensions DependencyInjection
  4. 区域赛铜牌专题(一)
  5. LoRa是怎样实现定位的
  6. ThreadLocal系列(二)-InheritableThreadLocal的使用及原理解析
  7. cups支持的打印机列表_网络存储让你的打印机瞬间变无线,打印文件不用愁
  8. pythonfor循环是迭代器吗_[Python] 迭代器是什么?你每天在用的for循环都依赖它!...
  9. StringBuffer与StringBuilder的作用与区别
  10. 报表软件公司悬赏 BUG,100块钱1个的真实用意
  11. PHP压缩CSS文件
  12. 一篇关于程序员的文章
  13. 学习方法:坚持输出学习法
  14. 城市引力模型——城市经济联系度制作
  15. 如何解决HEVC编码格式不能播放的问题?
  16. 云栖大会放大招,浪潮的JDM模式别人学不会
  17. krpano plugin interface
  18. iMessage群发,苹果群发技术开源
  19. 全国计算机等级考试二级web,全国计算机等级考试二级web大纲
  20. MySQL [1093] You can‘t specify target table ‘titles_test‘ for update in FROM clause

热门文章

  1. 用paddleocr识别汉字_汉字设计中的度量标准(三)
  2. python自动化测试平台github_GitHub - DangKaio/FXTest: 接口自动化测试平台——python+flask版,支持http协议...
  3. python从标准输入读取数据_在PYTHON中如何从标准输入读取内容stdin
  4. 前后台json交互,以及数据库json转换——PHPThinkphp5.1
  5. linux / 终端常用快捷键
  6. Git 下载很慢问题解决方案
  7. python网格测试_测试d的numpy网格大小调整
  8. delphi 如何判断编码格式,解决乱码问题
  9. Mybatis 学习之路其四:级联
  10. mysql基础拓扑图