-renderInContext:
自從它的出現以來一直被廣泛使用,但由於不可能呈現OpenGL圖層,AVPreviewLayer(可能是因爲是一種OpenGL圖層),我仍然無法正確呈現CATiledLayer。
隨着iOS7被引入了2個新的API來獲取屏幕截圖,其中一個是-snapshotViewAfterScreenUpdates:
,返回一個特定的視圖(_UIReplicantView
)和-drawViewHierarchyInRect:afterScreenUpdates:
最後一個是-renderInContext
的一種替代品,不幸的是它似乎有相同的限制。
-snapshotViewAfterScreenUpdates:它似乎也適用於OpenGL和AVPreviewLayer,不幸的是,如果你想做特定的動畫或者使用內容作爲背景(比如一個uibutton),那麼這樣的視圖並不是非常有用。我試圖從返回的視圖中獲取內容,但我仍然沒有運氣。
有人試過了嗎?_UIReplicantView和snapshotViewAfterScreen更新如何獲取其內容?
回答
我一直在努力解決這個問題,最初我們通過掛鉤到NSRunLoop並渲染圖像然後將它們合併在一起來解決它。這真是太麻煩了。
然後我們發現了一段看起來可以解決這個問題的代碼,但是您必須準備好在盒子外面思考一下。
該框架記錄了一個UIWindow的視頻,然後我們只是停止記錄。通過一個AVAssetImageGenerator(或類似的東西),並抓取圖像。
正如我所說這是一個非常奇怪的方式來解決它,但它似乎對我們工作正常。
(ASScreenRecorder)的代碼可以在此庫中找到。
https://github.com/alskipp/ASScreenRecorder
我們的一個菜單的在我們的產品是OpenGL和一些有視頻的背景!這對我們來說非常合適。但是我不能確定這是否是我們實現和使用OpenGL的特殊情況。儘管作爲他的示例視頻節目,它絕對適用於攝像機視圖。
它似乎真的是一個很多,但如果它的工作..我會研究, – Andrea
嗨,你能夠從UIReplicantView?我有同樣的問題。我曾嘗試過使用ASScreenRecorder,但它顯示的是視頻播放的黑色區域,在視圖上顯示其餘部分。 –
- 1. 匹配和更新根據其內容
- 2. jquery從更新範圍獲取內容
- 3. 如何獲取ubilabs geocomplete中的formatted_address和其他內容?
- 4. (更新)如何從帖子的單個*頁*獲取內容?
- 5. 如何從ajax更新頁面獲取內容?
- 6. 如何在點擊後獲取更新的內容?
- 7. 本地通知其更新其內容
- 8. jsch更改目錄和獲取內容
- 9. 如何更新ViewPager內容?
- 10. 獲取內容:新行
- 11. Tinymce獲取更改內容
- 12. 如何獲取iframe內容?
- 13. 如何獲取getElementsByTagNameNS內容?
- 14. 如何獲取href內容
- 15. 如何獲取內容?
- 16. framelayout如何獲取內容?
- 17. 如何更新應用內內容?
- 18. 獲取內容和處理
- 19. 如何使用「獲取最新版本」來分辨哪些內容會更新?
- 20. SMTP消息未更新其內容
- 21. imshow()不更新其內容C++
- 22. GtkLabel的位置更新其內容
- 23. 圖片框沒有更新其內容
- 24. 選擇行和使用jquery和更新其內容
- 25. 如何刷新/獲取新的谷歌AdSense內容?
- 26. 更新內容
- 27. 更新內容
- 28. 內容更新
- 29. 讀取文件並更改其內容
- 30. 獲取Ajax內容並將其過濾
但是,你想要做什麼與視圖,返回'snapshotViewAfterScreenUpdates'?你可以從該視圖生成UIImage並使用它,但是你不能訪問底層圖層的內容。 – gabuh
你有沒有試過從_UIReplicantView中獲取UIImage?至少在iOS7上返回一個空白圖像 – Andrea
我不在代碼前面,所以我會檢查我什麼時候到家。我有一個遊戲,我想我正在使用其中一種方法來獲取屏幕截圖。我不記得究竟是哪一個。 (我在遊戲中渲染一個OpenGL圖層,並且截圖工作正常),我會稍後檢查並再次發佈。 – gabuh