我已閱讀文檔和幾個示例,但仍不明白何時使用CATransformLayer
。正常的CALayer
平面的一切都在z = 0
飛機上,但是這不是什麼CATransformLayer
呢?數學解釋會很有幫助。什麼時候應該使用CATransformLayer?
6
A
回答
4
CATransformLayer用於在3D中轉換其子圖層,並且不會將它們壓平。
與正常層不同,變換層在Z = 0時不會將它們的子層投影(即變平)到平面中。
這件事情,如果你想要做的一組層的變換一起你會使用,但你不想因爲你想改變一個地方變換的靈活性,做到每一個個別。 ..類似於OpenGL中的相機/世界/模型轉換。這就是說,我從來沒有使用過它的機會,因爲我從來沒有嘗試過在LayerKit中做過真正的3D。我假設幾年前在WWDC上使用過一個堆棧演示,可能會有示例代碼。
如果我發現自己現在開始使用CATransformLayer時,我會切換到SceneKit,但那還不是iOS。
10
要充分了解什麼是CALayer的和CATransformLayer之間的差別,你應該閱讀這article
這是說明了如何使用CATransformLayer
最好的教程。
但簡要地說,
考慮我們在相同的X,Y座標,但不同的Z創造400架飛機,並將其添加爲subLayers
到scene.And某些角度旋轉場景的場景(CAlayer instance
)。
因此,我們可以期待它的樣子,
但是,相反它看起來像,
這是由於事實的CALayer是無法管理一個3D的深度它只是將場景變成一個Z級別。爲了糾正這個深度問題,我們使用CATransformLayer
,它有深入的理解和基於它的呈現。
注意:圖像取自文章。
相關問題
- 1. 什麼時候應該使用AWS,什麼時候不使用
- 2. 什麼時候應該使用sed,什麼時候應該使用awk
- 3. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 4. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 5. 什麼時候應該使用async/await,什麼時候不用?
- 6. 什麼時候應該使用datagrid,何時應該使用datagridview?
- 7. 什麼時候應該使用$(object),何時應該使用$ object?
- 8. 什麼時候應該使用FSharpFunc.Adapt?
- 9. 什麼時候應該使用_aligned_malloc()?
- 10. 什麼時候應該使用`use`?
- 11. 什麼時候應該使用$ rootScope?
- 12. 什麼時候應該使用$(document).ready?
- 13. 什麼時候應該使用html5 sessionStorage?
- 14. 什麼時候應該使用OWIN Katana?
- 15. 什麼時候應該使用流?
- 16. 什麼時候應該使用Promises?
- 17. 什麼時候應該使用setScriptTimeout?
- 18. 什麼時候應該使用助手?
- 19. 什麼時候應該使用Datomic?
- 20. 我什麼時候應該使用javax.swing.SwingUtilities.invokeLater()?
- 21. 什麼時候應該使用XS?
- 22. 什麼時候應該使用const?
- 23. 什麼時候應該使用退貨?
- 24. 什麼時候應該使用getElementById?
- 25. 什麼時候應該使用Solandra
- 26. 我什麼時候應該使用UITableViewCellSeparatorStyleSingleLineEtched?
- 27. 什麼時候應該使用@android:id /?
- 28. 什麼時候應該使用geom_map?
- 29. 什麼時候應該使用scala.util.DynamicVariable?
- 30. 什麼時候應該使用RESTful?
如果您認爲是解釋您的問題,請接受答案。 – santhu