iOS UIWebview加载网页时的图片放大,缩小,保存到相册,文字的拷贝

 //---缩放

    _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()"];

}


觉得有用的别忘了点个赞

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值