29

Facebookで共有アプリを実装しようとしています。このコードを使用してスクリーンショットを撮りました。

CGSize imageSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height);
UIGraphicsBeginImageContext(imageSize);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

iOS 6 では問題なく動作しますが、iOS 7 では画像が非常に悪く見えます。私はこの回答を使用しました: iOS: プログラムでスクリーンショットを作成するための最速で最もパフォーマンスの高い方法は何ですか? それを修正しようとして、それは助けになりましたが、それでもスクリーンショットは悪く見えます。画面が別の色になり、一部のオブジェクト (ラベルなど) が撮影した画像に表示されません。何か助けはありますか?

- - アップデート - -

ほとんどのオブジェクトを、weak ではなく保持するように変更することで解決できました。私の主な問題は、大きな白いブロックとして表示される私のテーブルビューのままでした(白いテキストのラベルが付いた透明であるはずなので、白いセルしか見えません)。テーブルの背景をクリアカラーとして定義しようとしましたが、役に立ちません..

- - 最後の更新 - -

ここには、私の問題とはまったく関係のない素晴らしい回答があります。プロジェクトがこの時点でプロジェクト SDK を切り替えるには多大な労力がかかるため、iOS7 SDK を使用せずに iOS7 で動作するデバイスで動作させたいと考えました。ほぼ完了です。

とにかく、私は最終的に私の問題を解決したコードの平和を追加しました:

この変更は単に問題を解決します:

UIGraphicsBeginImageContextWithOptions(imageSize, NO , 0.0f);

それ以外の:

UIGraphicsBeginImageContext(imageSize);
4

5 に答える 5

30

あなたはこれを試すことができます

- (UIImage *) screenshot {
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);

    [self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}
于 2013-09-25T01:27:50.040 に答える
6

iOS 8で:これは私がスクリーンショットを取得する方法です

  1. .h ファイルでスクリーンショットを取得するための UIImageView とメソッドを 1 つ追加しました

@property (弱い、非アトミック) IBOutlet UIImageView *imageView;

 -(IBAction)takeSnapShot:(id)sender;

2 スクリーン ショットを取得し、.m ファイルの UIImageView に設定するためのコード スニップを追加

- (IBAction)takeSnapShot:(id)sender
{
    UIGraphicsBeginImageContext(self.view.bounds.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *snapShotImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    imageView.image = snapShotImage;
}
  1. 以下は私が得た出力です。

ここに画像の説明を入力

于 2015-01-30T12:31:59.890 に答える