Quartz2D - 图片截取
来源:互联网 发布:dota2赌博软件 编辑:程序博客网 时间:2024/04/25 18:46
//// ViewController.m#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIImageView *imageView;@property(nonatomic,assign)CGPoint startPoint;@property(nonatomic,weak)UIView *clipView;@end@implementation ViewController- (UIView *)clipView{ if (_clipView == nil) { UIView *view = [[UIView alloc] init]; view.backgroundColor = [UIColor blackColor]; view.alpha = 0.5; [self.view addSubview:view]; _clipView = view; } return _clipView;}- (void)viewDidLoad { [super viewDidLoad]; // 给控制器的view添加一个pan手势 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; [self.view addGestureRecognizer:pan]; }- (void)pan:(UIPanGestureRecognizer *)recognizer{ CGPoint endPoint = CGPointZero; // 获取一开始的触摸点 if (recognizer.state == UIGestureRecognizerStateBegan) { // 一开始拖动的时候 self.startPoint = [recognizer locationInView:recognizer.view]; }else if (recognizer.state == UIGestureRecognizerStateChanged){ // 一直在拖动中 endPoint = [recognizer locationInView:recognizer.view]; CGFloat w = endPoint.x - self.startPoint.x; CGFloat h = endPoint.y - self.startPoint.y; // 获取截取范围 CGRect clipRect = CGRectMake(self.startPoint.x, self.startPoint.y, w, h); self.clipView.frame = clipRect; }else if (recognizer.state == UIGestureRecognizerStateEnded){ // 拖动结束 // 开启上下文 UIGraphicsBeginImageContextWithOptions(self.imageView.bounds.size, NO, 0); // 设置裁剪区域 UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.clipView.frame]; [path addClip]; // 获取上下文,渲染 CGContextRef ctx = UIGraphicsGetCurrentContext(); [self.imageView.layer renderInContext:ctx]; // 生成一张新的图片 self.imageView.image = UIGraphicsGetImageFromCurrentImageContext(); // 关闭上下文 UIGraphicsEndImageContext(); // 移除遮罩的view [self.clipView removeFromSuperview]; self.clipView = nil; } }@end
效果演示:
0 0
- Quartz2D - 图片截取
- XMG Quartz2D 图片截取操作
- Quartz2D 图片水印
- Quartz2D-4(图片裁剪)
- quartz2D 图片剪切
- Quartz2D完成图片剪切
- Quartz2D~图片裁剪
- Quartz2D - 图片擦除
- Quartz2d水印图片做法
- XMG Quartz2D 图片擦除
- Quartz2D图片处理
- Quartz2D-图片添加水印
- Quartz2D-圆形图片剪切
- Quartz2D-1(画文字、图片)
- Quartz2D - 08.图片擦除效果
- Quartz2D使用(图片剪切)
- Quartz2D(6)剪切图片
- quartz2d—— 图片水印
- 关于C++的问题
- 简化MongoAPI(spring-data-mongo)第一部分
- 正则表达式口诀
- 改变文件访问权限
- [Java开发之路](18)关于Class.getResource和ClassLoader.getResource的路径问题
- Quartz2D - 图片截取
- 关于在fragment中监听按钮的点击事件
- zabbix 模版其实就是主机
- hdoj 1220 Cube
- 【bzoj1738】[Usaco2005 mar]Ombrophobic Bovines 发抖的牛 二分答案+最大流
- 228. Summary Ranges leetCode[Java]
- 后台程序运行进度提示(ProgressBar与Handle的整合应用)
- SPOJ3273.ORDERSET(Treap 模版)
- String could not be serialized with encoding: 4