美文网首页
图片截屏

图片截屏

作者: 遇见灬最美的你 | 来源:发表于2016-12-01 19:17 被阅读9次
    000.gif
    //
    //  ViewController.m
    //  04-图片截屏(了解)
    //
    //  Created by 李亮 on 2016/12/1.
    //  Copyright © 2016年 www.thelast.com. All rights reserved.
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIImageView *imgView;
    @property (nonatomic, weak)  UIView * coverView;
    @property (nonatomic, assign) CGPoint startP;
    
    @end
    
    @implementation ViewController
    - (UIView *)coverView{
        if (_coverView == nil) {
            UIView * coverView = [[UIView alloc] init];
            coverView.backgroundColor = [UIColor blackColor];
            coverView.alpha = 0.5;
            [self.view addSubview:coverView];
            _coverView = coverView;
        }
        return _coverView;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        self.imgView.userInteractionEnabled = YES;
        
        UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
        
        [self.imgView addGestureRecognizer:pan];
    }
    
    - (void)pan:(UIPanGestureRecognizer *)pan{
        
        CGPoint p = [pan locationInView:self.imgView];
        
        if (pan.state == UIGestureRecognizerStateBegan) {
            //获取开始的点
            self.startP = p;
    
        }else if (pan.state == UIGestureRecognizerStateChanged){
            //当前的点
            CGFloat x = self.startP.x;
            CGFloat y = self.startP.y;
            CGFloat w = p.x - self.startP.x;
            CGFloat h = p.y - self.startP.y;
            CGRect rect =  CGRectMake(x, y, w, h);
            self.coverView.frame = rect;
            
        }else if (pan.state == UIGestureRecognizerStateEnded){
            
            //开启图片上下文
            UIGraphicsBeginImageContextWithOptions(self.imgView.frame.size, NO, 0);
            
            CGContextRef ctx = UIGraphicsGetCurrentContext();
            
            UIBezierPath * path = [UIBezierPath bezierPathWithRect:self.coverView.frame];
            [path addClip];
            
            //把当前的图片压入到上下文中
            [self.imgView.layer renderInContext:ctx];
    
            //取出图片
            UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
            
            UIGraphicsEndImageContext();
            
            self.imgView.image = newImage;
            
            [self.imgView removeGestureRecognizer:pan];
            //结束的点
            [self.coverView removeFromSuperview];
        }
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:图片截屏

          本文链接:https://www.haomeiwen.com/subject/isffmttx.html