1. ホーム
  2. ios

[解決済み] iOSでプログラム的にスクリーンショットを撮る方法

2022-04-27 15:07:15

質問

画面上の画像のスクリーンショットを保存フォトライブラリに保存してほしい。

どのように解決するのですか?

この質問は非常に閲覧数が多く、多くの回答があり、さらに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");
}


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
}

プログラミングのある自然として。 更新が必要な場合がありますので、編集するか、私に知らせてください。 *また、もし私が価値のある答えや方法を入れなかった場合は、遠慮なく私に知らせてください。