Чтобы развернуть ответ Брента, следующий код сделает снимок экрана и сохранит его в каталоге документов в виде PNG-файла screenshot.png:
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.
Кроме того, я не верю, что вы можете использовать стандартную конструкцию URL mailto: //, за которой следует openURL, для отправки MIME-кодированных вложений. Возможно, SDK 3.0 исправит это, но я еще не поиграл с этим. Возможно, вам понадобится что-то вроде sksmtpmessage , чтобы отправить сообщение прямо из вашего приложения.