iOS UIView延展:指定区域截图


- (UIImage *)screenshotWithRect:(CGRect)rect
{
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale);

    CGContextRef context = UIGraphicsGetCurrentContext();

    if (context == NULL)
    {
        return nil;
    }
    CGContextSaveGState(context);
    CGContextTranslateCTM(context, -rect.origin.x, -rect.origin.y);
    [self snapshotViewAfterScreenUpdates:YES];
    if( [self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)])
    {
        [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:NO];
    }else
    {
         [self.layer renderInContext:context];
    }

    CGContextRestoreGState(context);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;
}

注意:[self snapshotViewAfterScreenUpdates:YES];

参数:YES-代表视图的属性改变渲染完毕后截屏,NO-代表立刻将当前状态的视图截图

图片转格式
//    NSData *imageData = UIImageJPEGRepresentation(image, 1); // convert to jpeg

//    image = [UIImage imageWithData:imageData scale:[UIScreen mainScreen].scale];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容