IOS实现手动截图并保存

2016-02-19 09:05 41 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享IOS实现手动截图并保存,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - 编程语言 】

本文实例介绍了iOS手动剪裁图片并保存到相册的详细代码,分享给大家供大家参考,具体内容如下

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

一、实现效果
1、操作步骤

绘制一个矩形框,弹出一个alertView,提示是否保存图片 点击"是",将图片保存到相册 在相册中查看保存的图片

2、效果图

二、实现思路
1、在控制器的view上添加一个imageView,设置图片
2、在控制器的view上添加一个pan手势
3、跟踪pan手势,绘制一个矩形框(图片的剪切区域)
4、在pan手势结束时,通过alertView提示“是否将图片保存至相册?”

点击“是”,保存图片 点击“否”,暂时什么都不做

三、实现步骤
1、通过storyboard在控制器的view上添加一个imageView(设置图片),并在控制器的.m文件中拥有该属性

@property (weak, nonatomic) IBOutlet UIImageView *imageView;

2、设置通过手势绘制的图片的剪切区域
将图片的剪切区域作为成员属性clipView

@property (nonatomic, weak) UIView *clipView;

3、通过懒加载的方式创建clipView,并初始化

- (UIView *)clipView{  //如果clipView为被创建,就创建  if (_clipView == nil)  {UIView *view = [[UIView alloc] init];_clipView = view;//设置clipView的背景色和透明度view.backgroundColor = [UIColor blackColor];view.alpha = 0.5;//将clipView添加到控制器的view上,此时的clipView不会显示(未设置其frame)[self.view addSubview:_clipView];  }  return _clipView;}

4、给控制器的view添加pan手势,跟踪pan手势,绘制图片剪切区域
1)、创建并添加手势

/**创建手势**/UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];  /**  *每当pan手势的位置发生变化,就会调用pan:方法,并将手势作为参数传递  *//**添加手势**/[self.view addGestureRecognizer:pan];

2)、增加成员属性,记录pan手势开始的点

@property (nonatomic, assign) CGPoint startPoint;

3)、监听手势的移动

- (void)pan:(UIPanGestureRecognizer *)pan{  CGPoint endPoint = CGPointZero;  if (pan.state == UIGestureRecognizerStateBegan)  {/**开始点击时,记录手势的起点**/self.startPoint = [pan locationInView:self.view];  }  else if(pan.state == UIGestureRecognizerStateChanged)  {/**当手势移动时,动态改变终点的值,并计算起点与终点之间的矩形区域**/endPoint = [pan locationInView:self.view];//计算矩形区域的宽高CGFloat w = endPoint.x - self.startPoint.x;CGFloat h = endPoint.y - self.startPoint.y;//计算矩形区域的frameCGRect clipRect = CGRectMake(self.startPoint.x, self.startPoint.y, w, h);//设置剪切区域的frameself.clipView.frame = clipRect;  }  else if(pan.state == UIGestureRecognizerStateEnded)  {/**若手势停止,将剪切区域的图片内容绘制到图形上下文中**///开启位图上下文UIGraphicsBeginImageContextWithOptions(self.imageView.bounds.size, NO, 0);//创建大小等于剪切区域大小的封闭路径UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.clipView.frame];//设置超出的内容不显示,[path addClip];//获取绘图上下文CGContextRef context = UIGraphicsGetCurrentContext();//将图片渲染的上下文中[self.imageView.layer renderInContext:context];//获取上下文中的图片UIImage *image = UIGraphicsGetImageFromCurrentImageContext();//关闭位图上下文UIGraphicsEndImageContext();//移除剪切区域视图控件,并清空[self.clipView removeFromSuperview];self.clipView = nil;//将图片显示到imageView上self.imageView.image = image;//通过alertView提示用户,是否将图片保存至相册UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"保存图片" message:@"是否将图片保存至相册?" delegate:self cancelButtonTitle:@"否" otherButtonTitles:@"是", nil];[alertView show];}}

4)、设置alertView的代理方法,确定是否保存图片

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)
- (void)alertView:(nonnull UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{  //若点击了“是”,则保存图片  if (buttonIndex == 1)  {UIImageWriteToSavedPhotosAlbum(self.imageView.image, nil, nil, nil);/*** 该方法可以设置保存完毕调用的方法,此处未进行设置*/  }}

以上就是本文的全部内容,希望对大家的学习有所帮助。

来源:https://www.tulaoshi.com/n/20160219/1589486.html

延伸阅读
如果你感觉累,那就对了那是因为你在走上坡路。。这句话似乎有点道理的样子,时常提醒自己无论走到哪都不要忘记自己当初为什么出发。有时想想感觉有的东西可以记录一下,就把它记录下来吧,这次想写一下关于单张图片点击全屏预览的问题,网上查了一些大神写的有的功能确实很强大但自己暂时想要的只是简单的功能就好,还有些方法自己也没弄出想...
唱吧如何导出MV并保存至手机   1)首先先进入,进去之后点击。   2)然后选择自己喜欢的MV点击进去,进入到页面后向上一滑,滑到最下面点击。   3)弹出提示后点击,最后点击就可以了!要有99个金币才可以的哦!           注 :更多精彩教程请关注图老师手机教程...
标签: 电脑入门
使用MAC截图后,发现截图生成的文件全都保存在桌面上了,如果不想将这些文件保存在桌面上该怎么做呢?现在图老师小编就教你一个解决的方法。 更改保存位置的方法: 打开终端(应用程序-》实用工具),输入以下命令:(USERNAME为用你的用户名替换掉) defaultswritecom.apple.screencapturelocation /Users/USERNAME/Documents//Users/...
标签: 电脑入门
其实用QQ截图图片默认是存在你的剪切板里面的,如果你要保存,您可以粘贴到窗口,然后点右键另存为到你指定的目录就可以。 另外新版的qq2011图片默认保存路径是: 保存在qq2011所安装的盘的QQ----Users----Images的下面这里面有你曾经所有的截图。
1、找到截图按钮 360浏览器是可以直接截图的,我们首先打开自己的360浏览器,在右上角工具栏的部分找到我们的截图按钮,点击截图就可以了 2、拖动 点击之后就可以拖动自己的鼠标来确定自己需要截图的区域,确定自己需要截图的部分之后点击鼠标左键然后拖动确定一大块区域,之后松开鼠标就截图完成了 3、设置截图快捷键 点击...

经验教程

142

收藏

91
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部