我有一個圖像,我希望在屏幕上重複重繪,但是,每秒都會有大量的重繪,並且每次使圖像繪製圖像都會使應用程序受到巨大的性能影響。有沒有辦法以某種方式緩存CGImageRef或使CGContextDrawImage執行速度更快?CGContextDrawImage冗餘圖像繪製
回答
嘗試使用UIImageViews,看看它是否足夠快。你可以有許多UIImageViews。您應該將其所有圖像屬性都設置爲UIImage的同一個實例。
如果是遊戲,你應該只使用遊戲引擎(Unity,Cocos2D等)。他們已經花了很多時間研究如何快速完成這個任務。
這是一款遊戲,內容相當動態,所以我不想處理添加,移動和刪除所有子視圖,如果我可以避免它。 – Jumhyn 2011-12-23 07:59:16
你試過看看嗎?或者你只是猜測? – 2011-12-23 08:25:57
順便說一句,沒有理由不能緩存UIImageView並重用它們,就像UITableView用UITableViewCells一樣。 – 2011-12-23 08:26:46
CGLayerRef應該是你需要的。
從Apple文檔:
層適合於以下內容:
高品質的屏幕外繪圖您打算重用的渲染。
- 例如,您可能正在構建場景並計劃重複使用相同的背景。將背景場景繪製到圖層,然後在需要時繪製圖層。另一個好處是,您不需要知道顏色空間或設備相關信息來繪製圖層。
- 重複繪製。例如,您可能想要創建一個包含反覆繪製的相同項目的模式。將該項目繪製到圖層,然後重複繪製圖層,如圖12-1所示。任何您重複繪製的Quartz對象(包括CGPath,CGShading和CGPDFPage對象)如果將其繪製到CGLayer中,都會從性能提高中受益。請注意,圖層不僅適用於屏幕上的繪圖;您可以將其用於不是面向屏幕的圖形上下文,如PDF圖形上下文。
- 1. Retina中的CGContextDrawImage繪製圖像像素化?
- 2. 使用CoreGraphics繪製CATiledLayer CGContextDrawImage
- 3. SQL:ERD圖 - 數據冗餘。
- 4. MVC視圖模型冗餘
- 5. Cassandra中的地圖冗餘
- 6. 繪製Dataframe的子集而不是冗餘
- 7. 冗餘驗證?
- 8. 冗餘鑄造
- 9. 冗餘繼承?
- 10. AppFabric的冗餘
- 11. MSMQ冗餘
- 12. 冗餘列
- 13. 負載冗餘
- 14. HDFS和冗餘
- 15. 找出冗餘
- 16. 繪製圖像
- 17. 繪製圖像?
- 18. 繪製圖像
- 19. CI控制器中的冗餘實現
- 20. 冗餘控制流跳轉語句
- 21. 地理冗餘和MySQL複製
- 22. 冗餘使用.delete()
- 23. 從冗餘列表
- 24. HDFS冗餘副本
- 25. Maven冗餘構建
- 26. 冗餘__packed__屬性
- 27. django/south:冗餘add_column?
- 28. Erlang:MNesia:實現冗餘?
- 29. C#冗餘代表
- 30. JavaScript變量冗餘
爲什麼不使圖像一個UIImageView? – kennytm 2011-12-23 07:40:15
這是一個圖像,但它在屏幕上的許多位置繪製。所以這將是許多UIImageViews。此外,內容是動態的,所以這些圖像的繪製位置會發生變化,所以我不認爲使用圖像視圖是正確的選擇。 – Jumhyn 2011-12-23 07:42:06
使用Box2d或類似庫,並使用精靈。 – kennytm 2011-12-23 08:20:57