Я отвечаю на этот вопрос, так как он очень популярен, и есть много ответов, плюс есть Swift и Obj-C.
Отказ от ответственности Это не мой код, или мои ответы, , это только для того, чтобы помочь находящимся здесь людям найти быстрый ответ. Есть ссылки на оригинальные ответы, чтобы отдать кредит, где кредит должен! !! Пожалуйста, отметьте это +1, если вы используете их ответ!
Использование QuartzCore
#import <QuartzCore/QuartzCore.h>
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
UIGraphicsBeginImageContextWithOptions(self.window.bounds.size, NO, [UIScreen mainScreen].scale);
} else {
UIGraphicsBeginImageContext(self.window.bounds.size);
}
[self.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImagePNGRepresentation(image);
if (imageData) {
[imageData writeToFile:@"screenshot.png" atomically:YES];
} else {
NSLog(@"error while taking screenshot");
}
In Swift
func captureScreen() -> UIImage
{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, false, 0);
self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Примечание: Как и при программировании, может потребоваться обновление , поэтому, пожалуйста, отредактируйте или дайте мне знать! * Также, если я не смог включить ответ / метод, который стоит включить, не стесняйтесь, дайте мне знать!