use*_*345 13 iphone cocoa-touch objective-c
在目标C中我们是否可以拍摄屏幕截图并将此图像存储在UIImage中.
Bil*_*son 24
前面的代码假定要捕获的视图存在于主屏幕上......它可能不会.
这是否能够始终捕获主窗口的内容?(警告:在StackOverflow中编译)
- (UIImage *) captureScreen {
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
Run Code Online (Sandbox Code Playgroud)
Vde*_*edT 17
您需要创建一个屏幕大小的位图上下文并使用
[self.view.layer renderInContext:c]
Run Code Online (Sandbox Code Playgroud)
复制你的视图.完成后,您可以使用
CGBitmapContextCreateImage(c)
Run Code Online (Sandbox Code Playgroud)
从您的上下文创建CGImage.
详细说明:
CGSize screenSize = [[UIScreen mainScreen] applicationFrame].size;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate(nil, screenSize.width, screenSize.height, 8, 4*(int)screenSize.width, colorSpaceRef, kCGImageAlphaPremultipliedLast);
CGContextTranslateCTM(ctx, 0.0, screenSize.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
[(CALayer*)self.view.layer renderInContext:ctx];
CGImageRef cgImage = CGBitmapContextCreateImage(ctx);
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
CGContextRelease(ctx);
[UIImageJPEGRepresentation(image, 1.0) writeToFile:@"screen.jpg" atomically:NO];
Run Code Online (Sandbox Code Playgroud)
请注意,如果您为响应单击UIButton而运行代码,则图像将显示该按钮被按下.
| 归档时间: |
|
| 查看次数: |
28436 次 |
| 最近记录: |