Yes, you can composite the layer of the view onto a bitmap context and then obtain an image object from it:
CGContextRef CGContextCreate(CGSize size)
{
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate(NULL, size.width, size.height, 8, size.width * (CGColorSpaceGetNumberOfComponents(space) + 1), space, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(space);
return ctx;
}
- (UIImage *)screenshotView:(UIView *)view
{
CGSize size = view.frame.size;
// Check for retina display
if ([[UIScreen mainScreen] scale] > 1.5f) {
size.width *= 2;
size.height *= 2;
}
CGContextRef ctx = CGContextCreate(size);
CGAffineTransform normalize = CGAffineTransformMake(1, 0, 0, -1, 0, size.height);
CGContextConcatCTM(ctx, normalize);
[[view layer] renderInContext:ctx];
CGImage cgImg = CGBitmapContextCreateImage(ctx);
UIImage *img = [UIImage imageWithCGImage:cgImg];
CGImageRelease(cgImg);
CGContextRelease(ctx);
return img;
}