下のスニペットでメインスクリーンのスクリーンショットが撮影できる。
アプリが複数の UIWindow
を保持していたり、複数の UIScreen
にまたがってUIが表示されるとしても対応可能なはず。
UIGraphicsBeginImageContext(_screenSize);
UIScreen *mainScreen = [UIScreen mainScreen];
for (UIWindow *windowItr in [UIApplication sharedApplication].windows) {
if ([windowItr.screen isEqual:mainScreen]) {
[windowItr drawViewHierarchyInRect:windowItr.frame afterScreenUpdates:YES];
}
}
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();