美文网首页
UIWebView 仿微信长按扫描或者保存二维码

UIWebView 仿微信长按扫描或者保存二维码

作者: 人魔七七 | 来源:发表于2017-09-12 14:49 被阅读45次

  对于这个需求,是退而求其次对的做法。第三方不能UIWebView里面调用微信直接支付。就弄了个扫码支付。生成二维码客户自己扫码。如果自己扫码可能保存到相册自己保存然后扫码比较方便。

下面有几个思路。

第一个思路:webView加载后截屏然后截取二维码那个部分,但是对于多个二维码就有问题。

第二个思路:webView加载后根据长按的位置获取图片 的imageURL,然后下载后,保存到本地。但是如果网络不好比较慢的情况下特别慢体验比较差。

第三个思路:webView加载后图片等资源已经缓存到本地,直接根据imageURL去本地取图片,速度比较快,体验比较好点。

第一步:根据长按部分获取图片url

CGPoint touchPoint = [recognizer locationInView:self.webView]; 

NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];

 NSString *imageUrl = [self.webView stringByEvaluatingJavaScriptFromString:js];

第二步:从缓存中根据imageURL取图片 用到的是RNCachingURLProtocol 这个第三方库

NSString *fileName = [RNCachingURLProtocol cachePathForURLString:imageUrl];

RNCachedData *cache = [NSKeyedUnarchiver unarchiveObjectWithFile:fileName];

UIImage *image = [UIImage imageWithData:cache.data];

第三步:检测是不是二维码如果是保存到本地

CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{}];

NSArray *features = [detector featuresInImage:[CIImage imageWithCGImage:image.CGImage]];

if (features.count >= 1) {

return YES;

} else {

return NO;

}

收工。。

相关文章

网友评论

      本文标题:UIWebView 仿微信长按扫描或者保存二维码

      本文链接:https://www.haomeiwen.com/subject/ncucsxtx.html