ブレントの答えを拡張するために、次のコードはスクリーンショットを取得し、それを Screenshot.png という名前の PNG として Documents ディレクトリに保存します。
UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];
UIGraphicsBeginImageContext(screenWindow.frame.size);
[screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *screenshotPNG = UIImagePNGRepresentation(screenshot);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSError *error = nil;
[screenshotPNG writeToFile:[documentsDirectory stringByAppendingPathComponent:@"screenshot.png"] options:NSAtomicWrite error:&error];
画面の上部近くにタイトル バー用の空白の場所が残り、CAEAGLLayers からコンテンツを取得しているようには見えないため、これは少し大雑把です。
また、標準の mailto:// URL 構造に続いて openURL を使用して、MIME エンコードされた添付ファイルを送信できるとは思えません。3.0 SDK でこれが修正されるかもしれませんが、まだ試していません。アプリケーション内から直接メッセージを送信するには、sksmtpmessageなどを使用する必要がある場合があります。