//---缩放
_webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
_webView.scalesPageToFit=YES;
_webView.multipleTouchEnabled=YES;
_webView.userInteractionEnabled=YES;
_webView.scrollView.scrollEnabled =YES;
_webView.contentMode =UIViewContentModeScaleAspectFit;
//---缩放
//----长按图片保存
UILongPressGestureRecognizer* longPressed = [[UILongPressGestureRecognizeralloc] initWithTarget:selfaction:@selector(longPressed:)];
longPressed.delegate =self;
[_webViewaddGestureRecognizer:longPressed];
//------
//长按手势事件(保存图片)
-(void)longPressed:(UILongPressGestureRecognizer*)recognizer{
if (recognizer.state !=UIGestureRecognizerStateBegan) {
return;
}
CGPoint touchPoint = [recognizerlocationInView:self.webView];
NSString *imgURL = [NSStringstringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
NSString *urlToSave = [self.webViewstringByEvaluatingJavaScriptFromString:imgURL];
if (urlToSave.length ==0) {
return;
}
NSLog(@"获取到图片地址:%@",urlToSave);
[selfshowImageOptionsWithUrl:urlToSave];
}
//可以识别多个手势
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
returnYES;
}
- (void)showImageOptionsWithUrl:(NSString *)imageUrl
{
NSLog(@"点击了图片哈哈哈哈哈哈!!!!!");
UIAlertController *alertVc = [UIAlertControlleralertControllerWithTitle:nilmessage:nilpreferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction *cancle = [UIAlertActionactionWithTitle:@"取消"style:UIAlertActionStyleCancelhandler:^(UIAlertAction *_Nonnull action) {
}];
UIAlertAction *camera = [UIAlertActionactionWithTitle:@"保存图片到手机"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction *action) {
[selfsaveImageToPhoneWithImageUrl:imageUrl];
}];
// UIAlertAction *picture = [UIAlertAction actionWithTitle:@"分享图片给好友" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
// [self sharImageTofrendsWithImageUrl:imageUrl];
// }];
[alertVc addAction:cancle];
[alertVc addAction:camera];
//[alertVc addAction:picture];
[selfpresentViewController:alertVcanimated:YEScompletion:nil];
}
//保存图片到手机
-(void)saveImageToPhoneWithImageUrl:(NSString *)imageUrl{
NSLog(@"保存图片到手机!!!!");
__weaktypeof (self) weakSelf =self;
[[SDWebImageManagersharedManager] downloadImageWithURL:[NSURLURLWithString:imageUrl] options:0progress:^(NSInteger receivedSize,NSInteger expectedSize) {
} completed:^(UIImage *image,NSError *error, SDImageCacheType cacheType,BOOL finished, NSURL *imageURL) {
if (!error) {
NSLog(@"图片下载成功!!!");
}else{
NSLog(@"图片下载失败!!!");
}
if (image) {
//图片下载完成 在这里进行相关操作,如加到数组里或者显示在imageView上
[weakSelf saveImageToPhotos:image];
}
}];
}
- (void)saveImageToPhotos:(UIImage*)image
{
UIImageWriteToSavedPhotosAlbum(image,self, @selector(image:didFinishSavingWithError:contextInfo:),NULL);
}
// 指定回调方法
- (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo
{
NSString *msg =nil ;
if(error !=NULL){
msg = @"图片保存失败了" ;
}else{
msg = @"图片已经保存在您的相册里了" ;
}
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"提示"
message:msg
delegate:self
cancelButtonTitle:@"知道了"
otherButtonTitles:nil];
[alert show];
}
//分享图片给好友
-(void)sharImageTofrendsWithImageUrl:(NSString *)imageUrl{
NSLog(@"分享图片给好友!!!!");
[UMSocialSnsServicepresentSnsIconSheetView:selfappKey:kUmengAnalyticsAppKeyshareText:nilshareImage:nilshareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToQzone,UMShareToSina,UMShareToQQ,UMShareToTencent,UMShareToRenren,UMShareToDouban]delegate:self];
}
-(void)webViewDidFinishLoad:(UIWebView *)webView{
_isLoadFinish =YES;
//网页手势缩放效果
NSString *jsMeta = [NSStringstringWithFormat:@"var meta = document.createElement('meta');meta.content='width=device-width,initial-scale=1.0,minimum-scale=.5,maximum-scale=3';meta.name='viewport';document.getElementsByTagName('head')[0].appendChild(meta);"];
[_webViewstringByEvaluatingJavaScriptFromString:jsMeta];
//文字大小
[_webViewstringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '90%'"];//网页字体大小百分比即可
// [_webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= 'black'"];//网页字体颜色
//[_webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.background='#2E2E2E'"]; //页面背景色
NSString *str =@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '100%'";
[webView stringByEvaluatingJavaScriptFromString:str];
//js方法遍历图片添加点击事件返回所有图片
// static NSString * const jsGetImages =
// @"function getImages(){\
// var srcs = [];\
// var objs = document.getElementsByTagName(\"img\");\
// for(var i=0;i<objs.length;i++){\
// srcs[i] = objs[i].src;\
// };\
// for(var i=0;i<objs.length;i++){\
// objs[i].οnclick=function(){\
// document.location=\"myweb:imageClick:\"+srcs;\
// };\
// };\
// return objs.length;\
// };";
static NSString * const jsGetImages =
@"function getImages(){\
var srcs = [];\
var objs = document.getElementsByTagName(\"img\");\
for(var i=0;i<objs.length;i++){\
srcs[i] = objs[i].src;\
};\
for(var i=0;i<objs.length;i++){\
objs[i].index = i;\
objs[i].οnclick=function(){\
document.location=\"myweb:imageClick:\"+ srcs +'@'+this.index;\
};\
};\
return objs.length;\
};";
[webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法
[webView stringByEvaluatingJavaScriptFromString:@"getImages()"];
}