全屏幕截屏
如果当前屏幕有webview或者视频画面,如果想把这些画面都截取,可以使用以下代码:
- (UIImage *)screenShotGetImage {
UIView *view = [UIApplication sharedApplication].keyWindow;
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]){
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
} else {
UIGraphicsBeginImageContext(view.bounds.size);
}
[view drawViewHierarchyInRect:self.bounds afterScreenUpdates:NO];
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
// UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
return image;
}
注意
[view drawViewHierarchyInRect:self.bounds afterScreenUpdates:NO];
很关键。
afterUpdates参数表示是否在所有效果应用在视图上了以后再获取快照。例如,如果该参数为NO,则立马获取该视图现在状态的快照,反之,以下代码只能得到一个空白快照:
[view snapshotViewAfterScreenUpdates:YES];
[view setAlpha:0.0];