3. 選擇裁剪區(qū)域,進(jìn)行圖片裁剪

  1. 頭文件
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface ZQImageView : UIImageView

@end

NS_ASSUME_NONNULL_END
  1. 具體文件

#import "ZQImageView.h"


@interface ZQImageView ()
@property (nonatomic, assign) CGPoint beginPoint;
@property (nonatomic, strong) UIView *clipView;
@end

@implementation ZQImageView


- (UIView *)clipView{
    if(_clipView==nil){
        _clipView = [[UIView alloc]init];
        _clipView.backgroundColor = [UIColor grayColor];
        _clipView.alpha = 0.7;
        [[self superview] addSubview:_clipView];
    }
    return _clipView;
}

- (instancetype)initWithFrame:(CGRect)frame{
    if(self = [super initWithFrame: frame]){
        self.userInteractionEnabled = YES;
        UIPanGestureRecognizer *gestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(gestureRecognizer:)];
        [self addGestureRecognizer:gestureRecognizer];
    }
    return self;
}

-(void)gestureRecognizer:(UIPanGestureRecognizer*)pan{
    CGPoint cur = [pan locationInView:self];
    if(pan.state == UIGestureRecognizerStateBegan){
        self.beginPoint  = cur;
    }
    if(pan.state == UIGestureRecognizerStateChanged){
        CGFloat x =  self.beginPoint.x;
        CGFloat y = self.beginPoint.y;
        CGFloat w = cur.x  - self.beginPoint.x;
        CGFloat H = cur.y - self.beginPoint.y;
        self.clipView.frame = CGRectMake(x, y, w, H);
        
    }
    if(pan.state == UIGestureRecognizerStateEnded){
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
        UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.clipView.frame];
        [path addClip];
        CGContextRef ctx =  UIGraphicsGetCurrentContext();
        [self.layer renderInContext:ctx];
        UIImage *newImage =  UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        self.image = newImage;
        [self.clipView removeFromSuperview];
        self.clipView = nil;
    }
}

@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容