アプリのスクリーンショットを取得する

More than 3 years have passed since last update.

下のスニペットでメインスクリーンのスクリーンショットが撮影できる。

アプリが複数の 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();