iOS 截圖總結

jopen 10年前發布 | 30K 次閱讀 IOS iOS開發 移動開發

iOS的截圖都會想到按住喚醒鍵加HOME鍵,我要說的截圖是類似于QQ截圖。

首先我們要繪制虛線選框:

那我們就要獲取手指觸摸屏幕的起始點,那我們就要用到的方法是:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

這個方法是系統為我們提供的。

在這個方法里面記錄起始點完整代碼如下:

  

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    UITouch * touch = [touches anyObject];

       point = [touch locationInView:self];//記錄起始點,point是聲明為全局變量



} 

記錄完起始坐標后,我們做的是在我們手指移動的時候畫虛線的矩形框,我們就要用到一個方法,這個方法也是系統為我們提供的:-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
完整代碼如下:

 

 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{



    UITouch *touch1=[touches anyObject];

    CGPoint endPoint=[touch1 locationInView:self];//記錄結束點的坐標

   用結束點的坐標減去起始點的坐標我么得到一個矩形框的寬和高

   聲明一個點記錄一下;

    point2.x=endPoint.x-startPoint.x;

    point2.y=endPoint.y-startPoint.y;

    調用重繪方法

 [self setNeedsDisplay];



} 


準備工作做好后,我們就要畫虛線的矩形框了


我們需要重寫drawRect方法。完整代碼如下:

 

 - (void)drawRect:(CGRect)rect

{



 //獲取繪圖上下文-畫板

    CGContextRef ref=UIGraphicsGetCurrentContext();

    //設置虛線

    CGContextSetLineDash(ref,2, dashPattern, 1);



 //畫截取線框

  CGContextAddRect(ref,CGRectMake(startPoint.x,startPoint.y,point2.x,point2.y));



 //設置顏色  

  CGContextSetStrokeColorWithColor(ref,[UIColor redColor].CGColor);

  //設置線寬 

  CGContextSetLineWidth(ref,2);

    CGContextStrokePath(ref);
} 


這樣我們的虛線選款就做好了,現在我們要實現截圖功能,
首先我們先初始化一個  UIImageView ,然后把圖片貼到上面具體代碼如下:
 - (id)initWithFrame:(CGRect)frame



{

    self = [super initWithFrame:frame];

    if (self) 

    {

        _imageView = [[UIImageView alloc] initWithFrame:CGRectZero];

        [self addSubview:_imageView];

        self.backgroundColor = [UIColor colorWithPatternImage:[UIImage            imageNamed:@"iphone.jpg"]];

          }

    return self;

}

然后截取我們想要的圖片,我們還是在drawRect方法里來實現,
 - (void)drawRect:(CGRect)rect

{

   先加載一張圖片到ImageView上



  UIImage *image=[UIImage imageNamed:@"iphone.jpg"];



  //截取圖片

CGImageRef  img= CGImageCreateWithImageInRect(image.CGImage,CGRectMake(startPoint.x,startPoint.y,point2.x,point2.y)); 

     UIImage *newImage = [UIImage imageWithCGImage:img];

     _imageView.image = newImage;

     _imageView.frame = CGRectMake(startPoint.x,startPoint.y,point2.x,point2.y);
} 

截圖就做完了
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!