0

スクリーンショットを撮るとき、ボタンを削除するにはどうすればよいですか? このコードをスクリーンショットに使用しています

CGImageRef originalImage = UIGetScreenImage();
CGImageRef videoImage = CGImageCreateWithImageInRect(originalImage, CGRectMake(0, 66, 320, 230));            
UIImage *snapShotImage = [UIImage imageWithCGImage:videoImage];
UIImageWriteToSavedPhotosAlbum(snapShotImage, nil, nil, nil);
CGImageRelease(originalImage);                
CGImageRelease(videoImage);  

ここに画像の説明を入力

4

4 に答える 4

1

スクリーンショットを撮る直前にボタンを削除すると、そのフレームを CGRect に保存し、UIGraphicsEndImageContext(); の後に再度追加できます。ライン

 CGRect rect = yourButton.frame; // store your buttons frame
[yourButton removeFromSuperView];
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

yourButton = [UIButton buttonWithType:UIButtonTypeCustom];

[yourButton setFrame:rect];
[yourButton setImage:[UIImage imageNamed:@"yourButtonImage.png"] forState:UIControlStateNormal];
[yourButton addTarget:self action:@selector(yourButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view yourButton];
于 2012-06-30T12:07:02.487 に答える
0

ボタンの画像が他の画像に含まれている場合、これは非常に複雑になる可能性があります (フルスクリーンに入ってスクリーンショットを撮ることをお勧めします)。

ボタン画像が他の画像に直接含まれていない場合 (例: HTML オーバーレイのみ)、css を使用して簡単に非表示にすることもできます。

しかし、iOS でスクリーンショットを作成するよりも良い方法があるかもしれません…</p>

于 2012-06-30T09:57:36.743 に答える
0

こんにちは、backViewのようなビューを作成し、ボタンをクリックしてこのコードを呼び出すことができます....

-(IBAction)screenShotBtnPress :(id)sender  
{

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

    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
}  

このコードは、BackView のスクリーンショットを取得し、このビューの IBOutlet を作成し、これを接続します....

于 2012-06-30T10:19:03.797 に答える
-2

スクリーンショットを撮る前にそのボタンを非表示にします。

于 2012-06-30T09:54:55.237 に答える