1

私は横向きにしか存在しないアプリに取り組んでいます。そのアプリには、その特定の画面のスクリーンショットを撮る機能があります。私はこのコードを実装しました

UIGraphicsBeginImageContext(self.view.window.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = UIGraphicsGetImageFromCurrentImageContext();;
imageView.transform = CGAffineTransformMakeRotation(3.0 * M_PI / 2.0);
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(imageView.image, nil, nil, nil);

このコードを使用して、ポートレートモードでアプリのスクリーンショットを取得します。ランドスケープモードで欲しいです。

4

2 に答える 2

6

それを追加しないでくださいwindow。追加すると、コンテキストサイズが間違っています。

// Just use self.view.bounds.size is OK
UIGraphicsBeginImageContext(self.view.bounds.size);
于 2012-12-03T11:46:31.240 に答える
0

おそらく遅いですが、UIImageViewでラップしても、実際には画像自体は回転しません。これは、アプリケーションのウィンドウ全体から回転した画像を作成するために私が書いたコードです。

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];

CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContext(rect.size);

CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];

UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return [[UIImage alloc] initWithCGImage:[image CGImage] scale:1 orientation:UIImageOrientationLeft];

右に回転させたい場合は、UIImageOrientationLeftをUIImageOrientationRightに置き換えてください。

于 2013-08-05T15:04:42.880 に答える