2013-10-24 13 views
24

-renderInContext:は、その外観から広く使用されていますが、OpenGLレイヤーをレンダリングすることは不可能です(AVPreviewLayerはおそらく一種のOpenGLレイヤーなので)、私はまだCATiledLayerを正しくレンダリングできませんでした。 iOS7で
は、一つは、特定のビュー(_UIReplicantView)と-drawViewHierarchyInRect:afterScreenUpdates:最後のものは-renderInContextの代替の一種である、残念ながら同じ制限を持っているようだが返さ-snapshotViewAfterScreenUpdates:で、スクリーンショットを取得するために、2つの新しいAPIが導入されました。
-snapshotViewAfterScreenUpdates:OpenGLやAVPreviewLayerでも動作するようですが、残念ながら、特定のアニメーションを実行したり、内容を背景(uibuttonなど)として使用したい場合はあまり役に立ちません。私は返されたビューからコンテンツを取り除こうとしましたが、まだ運が得られません。
まだ誰かが試したことがありますか?_UIReplicantViewおよびsnapshotViewAfterScreenはコンテンツの取得方法を更新しますか?

+1

'snapshotViewAfterScreenUpdates'を返すビューで何をしようとしていますか?そのビューからUIImageを生成して使用することはできますが、下層の 'contents 'にアクセスすることはできません – gabuh

+0

_UIReplicantViewからUIImageを取得しようとしたことがありますか?少なくともiOS7は空白の画像を返します – Andrea

+0

私はコードの前にいませんので、家に到着したときにチェックします。私はゲームをしており、スクリーンショットを取得するためにこれらの方法の1つを使用していると思います。私はどれが正確に覚えていない。 (私はゲームでOpenGLレイヤーをレンダリングしており、スクリーンショットが動作しています)後で確認して再度投稿します。 – gabuh

答えて

1

私はこの問題を抱えて苦労しましたが、最初はNSRunLoopにフックしてイメージにレンダリングし、それらを結合していました。それは本当に面倒だった。

次に、この問題を解決するように見えるコードを見つけましたが、ボックスの外で少し考えようと準備する必要があります。

このフレームワークはUIWindowのビデオを記録するので、私たちはただレコードを停止していました。それをAVAssetImageGenerator(またはそのようなもの)を通して押して、イメージを取り出す。

私が言うように、それは非常に奇妙な解決方法ですが、それは問題なく動作しているようです。

(ASScreenRecorder)のコードは、ここのライブラリにあります。私たちのメニューの当社製品での

https://github.com/alskipp/ASScreenRecorder

一つは、OpenGLだったし、いくつかは、ビデオの背景を持っていました!そして、これは私たちにとって完璧に機能しました。しかし、OpenGLの実装と使用に特有のものかどうかは確かではありません。彼のサンプルビデオのショーと同じように、カメラビューでは間違いなく動作します。

+0

それは本当に私はそれを見ていきます。 – Andrea

+0

こんにちは、UIReplicantViewから画像を取得できましたか?私は同じ問題を抱えています。私はASScreenRecorderを試してみましたが、ビデオが再生されている黒い部分が表示されています。 –

関連する問題