? 對于這個需求,是退而求其次對的做法。第三方不能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;
}
收工。。