截图不会出现在照片应用(iOS OBJ-C)
问题描述:
我尝试使用下面的代码保存我的应用程序的截图:截图不会出现在照片应用(iOS OBJ-C)
UIView* view = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
NSURL* documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSString* filename = [NSString stringWithUTF8String: @"screenshot.png"];
NSString* path =[NSString stringWithFormat:@"%@/%@",[documentsDirectory path], filename];
BOOL saved = [[NSFileManager defaultManager] createFileAtPath:path contents:data attributes:nil];
NSLog(saved ? @"Saved" : @"Not saved");
它记录Saved
,但图像没有出现在照片应用程序。
documentsDirectory
:/var/mobile/Containers/Data/Application/003D7989-D88E-48FF-A3C5-86A340C6F077/Documents
我做错了什么?感谢您的回应。
答
试试这个代码保存图像在照片应用
NSData * data = UIImagePNGRepresentation(image);
UIImageWriteToSavedPhotosAlbum(compressedPNGImage,
self,
@selector(thisImage:hasBeenSavedInPhotoAlbumWithError:usingContextInfo:),
NULL);
,那么你应该如下
- (void)thisImage:(UIImage *)image hasBeenSavedInPhotoAlbumWithError:(NSError *)error usingContextInfo:(void*)ctxInfo
{
if (error)
{
// not saved
}
else
{
// saved
}
}
执行上述选择最后,一定要加“隐私 - 图片库使用情况说明“键信息目标设置
嗯,它现在保存到照片,但它是纯白色图像 –
好吧,也许”图像“是白色的:)我会更新源代码;) – ddb
我认为你应该简单地获取当前viewController的视图,而不是“UIView * view = [[[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];” – ddb