我尝试使用谷歌搜索并查看SO中的其他相关问题,但是,我无法解决此问题:我正在使用这段代码拍摄整个屏幕的快照(ios7)。但是,没有保存图像。我尝试记录数据大小,尺寸等。它们似乎是有效的。有什么指针吗?
UIView *screenshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
UIGraphicsBeginImageContext(screenshotView.bounds.size);
[[screenshotView layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *scrnshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(scrnshot, nil, nil, nil);
答案 0 :(得分:1)
请改为尝试:
UIImageWriteToSavedPhotosAlbum(scrnshot, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
在控制器中实现此方法:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
if (error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Error" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Done" message:@"Image saved successfully" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
}
它可以工作,或者你会弄清楚问题是什么。 确保您允许应用使用照片库。
希望它有效。
更新:
我使用此代码截取屏幕截图:
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];
希望它适合你!
答案 1 :(得分:-1)
实际上,图片在照片库中保存,但它们是 WHITE 颜色。这就是为什么似乎没有图像。
你需要更改这一行UIView *screenshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
,你的代码才能正常工作。