美文网首页
图片截屏

图片截屏

作者: 遇见灬最美的你 | 来源:发表于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

相关文章

  • 读袁靖老师关于长城保护的政协提案有感(修订版)

    截屏图片一: 截屏图片二: 截屏图片三: 截屏图片四: 正文: 当看到袁靖老师这一政协提案时,第一印象,这...

  • Quartz 2D (2)

    1、圆形图片裁剪 2、实现手机屏幕截屏功能(把控制器中View的内容截屏生成一张新的图片) 3、图片截屏 4、图片...

  • 如何成为一名有货的新媒体运营者

    图片制作 Snagit:支持滚动截屏 Faststone Capture:滚动截屏、自定义截屏、录制视频制作GIF...

  • 图片截屏

    //1.开启图片上下文 UIGraphicsBeginImageContextWithOptions(self.v...

  • 图片截屏

  • 截屏与图片的截屏

    布局图: 主要代码: 赠送一个福利 效果:

  • Quartz2D 第二集

    01-带有边框的图片裁剪 02-截屏 03-图片擦除 04-图片截屏 05-手势解锁 06-画板

  • #Quartz2D#

    01-带有边框的图片裁剪 02-截屏 03-图片擦除 04-图片截屏 05-手势解锁 06-画板

  • 安卓截图笔记

    Android截屏 Android截屏的原理:获取具体需要截屏的区域的Bitmap,然后绘制在画布上,保存为图片后...

  • Android截屏方案

    Android截屏 Android截屏的原理:获取具体需要截屏的区域的Bitmap,然后绘制在画布上,保存为图片后...

网友评论

      本文标题:图片截屏

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