在ios原生程序里面ios
全屏截屏spa
UIWindow *window = [[UIApplication sharedApplication] keyWindow]; //下边是经典的4步3d
UIGraphicsBeginImageContext(window.frame.size); //打开画布,并设定大小指针
[window.layer renderInContext:UIGraphicsGetCurrentContext()]; // u3d下 此行替换blog
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();图片
UIGraphicsEndImageContext();it
指定部分截屏:接着上面作,已经获取到了全屏的(UIImage *)screenShot
io
CGRect rect = CGRectMake(0, 100, K_WIDTH, 400); //设置 一个截屏区域class
CGImageRef imageRef = CGImageCreateWithImageInRect(_screenShot.CGImage, rect); //注意指针没有星号
date
screenShot = [UIImage imageWithCGImage:imageRef]; //建立新图片须要一个CGImageRef的参数
通常对iOS来说就够用了,但对于u3d导出的XCode工程来说,这样截图会截到一片白,查看运行中XCode中的层级视图,确实一片白
经过保存到图库查看 UIImageWriteToSavedPhotosAlbum(_screenShot, nil, nil, nil);
解决办法:把上面标注替换的一行换成下面
[window drawViewHierarchyInRect:CGRectMake(0, 0, K_WIDTH, K_HEIGHT) afterScreenUpdates:YES];