在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];