2010-12-26 12 views
9

私は古いApple TVのスクリーンセーバーに似たCore Animationのシーンを構築しています。画像の連続ストリーム(それぞれCALayer)は、下から上へ垂直に通過します。これを達成するために、レイヤーのアニメーションが外に出たときに終了すると、レイヤーのアニメーションが下に戻され、新しいイメージが割り当てられ、再アニメーション化されます。これはanimationDidStopデリゲートメソッドで行われます。しかし、iPadでアプリを実行しているときにスクリーンショットを撮ると、レイヤーが底に再配置されることはなく、再び表示されないことに気付きました。私はこの問題を切り分けました。スクリーンショットを撮ることで問題が起こっていることは間違いありません。これは、スクリーンショットを撮ることがアニメーションのタイミングに影響すると考えるようになります。だから...iPadのコアアニメーションScreenshot

  1. iDeviceのスクリーンショットを撮るのにアニメーションがどのような影響を与えますか?
  2. この効果を得るためのよりよい方法はありますか?
+0

スクリーンショットの撮影にはどのような方法を使用していますか?スリープ+ホームボタンまたはXcodeオーガナイザまたは 'UIScreenGetImage()'? –

+0

私はデバイスでスリープ+ホームボタンを使用しています。私はXcodeからスクリーンキャプチャを試みましたが問題はありませんでした。このことを念頭に置いて、私は、この問題は、デバイス上でスクリーンショットを撮るときに、白い「フラッシュ」アニメーションと関係があると考え始めています。 – David

+1

'-animationDidStop:'メソッドでは、アニメーションが終了したかどうかに応じて同じアクションを実行しますか? アニメーションは、スクリーンショットが撮られたときに終了していないとフラグされることがあります。 – Kemenaran

答えて

1

スクリーンショットをキャプチャして、ビューのコンテンツに基づいてプログラムでキャプチャしてから、スクリーンショットとして保存することができます。私はあなたの目的を知らないが、これは私が以前にしたことである。スクリーンショットのコンテンツはすべてCaptureviewです。

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
UIGraphicsBeginImageContext(CaptureView.frame.size); 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
[[UIColor clearColor] set]; 
CGContextFillRect(ctx, screenRect); 

[CaptureView.layer renderInContext:ctx]; 

UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIImageWriteToSavedPhotosAlbum(screenImage, nil, nil, nil); 
UIGraphicsEndImageContext(); 

アニメーションは静止していますかUIImageView?画面外に出ることを検出したい画像ビューの場合は、frame.origin.yを0と比較して使用してください。

0

アニメーションがアニメーション化されている間、screenshotをキャプチャするためにpresentationLayerを使用できます。 つまり[CaptureView.layer presentationLayer]

CALayerのpresentationLayerでアニメーションを再生しながらタッチを検出することもできます。