屏幕截图

- (IBAction)clip {

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        // 1.捕捉

        UIImage *newImage = [UIImage captureWithView:self.view];

        

        // 2.写文件

        NSData *data = UIImagePNGRepresentation(newImage);

        NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"];

        [data writeToFile:path atomically:YES];

    });

}

//给UIImage添加类目   传人截屏范围。返回剪切图片

+ (instancetype)captureWithView:(UIView *)view

{

    // 1.开启上下文

    UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0);

    

    // 2.将控制器view的layer渲染到上下文

    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    //如果截屏次数很多,那么就用下面方法代替,不然CPU会给出警告。导致崩溃 /////////

// 1.开启上下文

   // UIGraphicsBeginImageContext(view.frame.size);

    //[view drawViewHierarchyInRect:CGRectMake(0, view.frame.origin.y, view.frame.size.width, view.frame.size.height)  afterScreenUpdates:YES];

/////////////////////

    // 3.取出图片

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    

    // 4.结束上下文

    UIGraphicsEndImageContext();

    

    return newImage;

}

 

posted @ 2016-02-23 19:50  小于0813  阅读(136)  评论(0编辑  收藏  举报