直接贴.m文件代码

#import "UIImageView+Scale.h"

static CGRect oldframe;

@implementation UIImageView (Scale)

//放大

-(void)showImageView:(UIImageView *)targetImgView {

UIImage *image = targetImgView.image;

UIWindow *window = [UIApplication sharedApplication].keyWindow;

UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];

oldframe =[targetImgView convertRect:targetImgView.bounds toView:window];

bgView.backgroundColor = [UIColor lightGrayColor];

bgView.alpha = 0;

UIImageView *imageView = [[UIImageView alloc ] initWithFrame:oldframe];

imageView.image = image;

imageView.tag = 1001;

[bgView addSubview:imageView];

[window addSubview:bgView];

bgView.userInteractionEnabled = YES;

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideImage:)];

[bgView addGestureRecognizer:tap];

//如果图片还没有加载出来会卡在这里

if (image) {

[UIView animateWithDuration:0.3 animations:^{

imageView.frame = CGRectMake(0,  (SCREEN_HEIGHT - image.size.height * SCREEN_WIDTH / image.size.width)/2, SCREEN_WIDTH, image.size.height * SCREEN_WIDTH/image.size.width);

bgView.alpha = 1;

}];

}

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(bgView.right - 80, imageView.bottom + 10, 80, 30)];

[btn setTitle:@"保存" forState:0];

[bgView addSubview:btn];

[btn addTarget:self action:@selector(saveImage:) forControlEvents:UIControlEventTouchUpInside];

}

//缩小隐藏

- (void)hideImage:(UITapGestureRecognizer *)tap {

UIView *backgroundView=tap.view;

UIImageView *imageView=(UIImageView*)[tap.view viewWithTag:1001];

[UIView animateWithDuration:0.5 animations:^{

imageView.frame = oldframe;

backgroundView.alpha=0;

} completion:^(BOOL finished) {

[backgroundView removeAllSubviews];

[backgroundView removeFromSuperview];

}];

}

//保存

- (void)saveImage:(UIButton *)sender {

UIImageView *imageView = (UIImageView *)[sender.superview viewWithTag:1001];

UIImage *image = imageView.image;

UIImageWriteToSavedPhotosAlbum(image,self,@selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:),nil);

}

//保存回调

- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {

NSString *message;

if (!error) {

message = @"成功保存到相册~";

}else {

message = [error description];

}

NSLog(@"message is %@",message);

[MBProgressHUD showHUD:message];

}

@end

ios 点击放大图片,保存至手机相册的更多相关文章

  1. 微信小程序base64图片保存到手机相册

    问题:base64图片不能直接用wx.saveImageToPhotosAlbum保存到手机相册 解决: 先用fs.writeFile写入本地文件,再wx.saveImageToPhotosAlbum ...

  2. jquery插件jquery.LightBox.js之点击放大图片并左右点击切换图片(仿相册插件)

    该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的点击放大图片并左右点击切换图片的效果,您可以根据自己的实 ...

  3. React Native之图片保存到本地相册(ios android)

    React Native之图片保存到本地相册(ios android) 一,需求分析 1,react native保存网络图片到相册,iOS端可以用RN自带的CameraRoll完美解决,但是andr ...

  4. IOS下拉放大图片

    代码地址如下:http://www.demodashi.com/demo/11623.html 一.实现效果图 现在越来越多的APP中存在下拉放大图片的效果,今天贡献一下我的实现这种方法的原理,和我遇 ...

  5. 小程序base64图片格式保存至手机相册

    // 保存图片至相册 saveImg() { //获取文件管理器对象 const fs = wx.getFileSystemManager() //文件保存路径 const Imgpath = wx. ...

  6. 小程序canvas生成海报保存至手机相册

    小程序canvas画图保存至手机相册 (1)可直接展示生成的海报 .因手机分辨率不同可能导致生成的海报会有细微差别,这里隐藏canvas海报,页面正常设置海报样式保存时保存隐藏的canvas海报 (2 ...

  7. 微信小程序点击按钮将图片保存到手机

    SaveCard: function(e) { let that = this; console.log('保存'); var imgSrc = e.currentTarget.dataset.img ...

  8. js限制图片大小、点击放大图片、点击在新开页面显示

    缩放图片到合适大小        function ResizeImages() {            var myimg, oldwidth, oldheight;            var ...

  9. flutter 长按图片保存到手机

    main.dart import 'dart:io'; import 'package:flutter/material.dart'; import 'package:http/http.dart' ...

随机推荐

  1. app wap开发mobile隐藏地址栏的js

    function scrolltol (){ setTimeout ( function () { , ) }, ); } window . onload = function () { if ( d ...

  2. 设置RichEdit相关颜色说明

    1.设置RichEdit客户区的背景颜色 要设置RichEdit的背景色,需要发送 EM_SETBKGNDCOLOR 消息给RichEdit控件,关于该消息的说明:wParam参数 为颜色选项,如果是 ...

  3. javascript深入之location对象和history对象

    浏览器的location 和history对象: 一.location对象: 1>location.reload() 相当于按浏览器上的“刷新”(IE)或“Reload”(Netscape)键. ...

  4. Magnum Kuernetes源码分析(二)

    Kubernetes Master Stack kubernetes master的stack的resources主要分为三个部分. master wait handle wait handle主要用 ...

  5. saltstack布署实践 【配置文件管理-state模块】

    那如果要批量修改被管机器的某个配置文件怎么做?以下给出一个最简单案例.   先在主管机器master上查看/etc/salt/master配置文件 看到有以下几行配置文件   # file_roots ...

  6. iframe自适应高度问题

    我页面中的iframe <iframe name="mainFrame" id="mainFrame" src="/account/${page ...

  7. 解读<!doctype html>

    回归简单的doctype声明:http://blog.csdn.net/wangxiaoqin11/article/details/42032037 为何说 HTML5「no longer based ...

  8. es5 数组

    一. 数组申明 var a = new Array(5)  会生成一个长度为5 每个元素都是undifined的数组 var a = new Array(1,2,3) 跟 var a = [1,2,3 ...

  9. Heap Sort

    #include<iostream> using namespace std; const int MAX = 1001; int l[MAX]; //Heap Sort void Hea ...

  10. js 数值格式化函数

    function ForDight(Dight,How){ ,How))/Math.pow(,How); return Dight; } //ForDight(Dight,How):数值格式化函数; ...