兩者都具有大部分相同的屬性,都支持不同類型的動畫,都表示不同的數據。 UIView和CALayer有什麼區別?UIView和CALayer之間有什麼區別?
回答
在iOS上,每個UIView都由Core Animation CALayer支持,因此即使您沒有意識到,也可以在使用UIView時處理CALayers。與Core Animation存在之前演化的Mac上的NSViews不同,UIViews旨在成爲這些CALayers周圍的輕量級包裝。
正如我在類似的問題"When to use CALayer on the Mac/iPhone?"描述,直接與CALayers工作不給你顯著的性能優於UIViews。您可能想要使用CALayers而不是UIViews構建用戶界面元素的原因之一是它可以非常容易地移植到Mac。 UIViews與NSViews非常不同,但CALayers在兩個平臺上幾乎完全相同。這就是爲什麼Core Plot框架使用CALayers而不是其他UI元素繪製其圖形的原因。
一件事UIViews提供了CALayers是內置的用戶交互的支持。他們處理觸摸測試以及其他相關操作,如果管理CALayers層次結構,您需要自己構建自己的操作。自己實現這並不難,但是在構建僅CALayer接口時需要編寫額外的代碼。
你將經常需要訪問底層的一個UIView執行更復雜的動畫比基UIView類允許時。隨着iOS SDK的成熟,UIView的動畫功能也在不斷增加,但仍有一些事情最好通過與底層CALayer進行交互來完成。
從雷Wenderlich博客(Tutorial)
CALayers只是代表屏幕 與視覺內容上的一個矩形的類。 「但請稍等,」你可能會說,「這就是UIViews的原因!」這是真的,但有一個技巧: 每個UIView都包含一個它所依賴的根層。
簡單地說,從UIView的繼承NSResponder類,處理來自用戶的事件,包含CALayer的,它從NSObject的繼承,主要集中在渲染,動畫等
最大的區別是UIView的是專爲CocoaTouch移動設備上。它增加了一些CALayer沒有提供的事件處理程序。
UIView
爲CALayers
的容器。使用UIKit
。
CALayer
我們借鑑的內容。使用CoreGraphics
如果你與像功能的自定義控制工作,這將是巨大含有準確本地繪製多層單一視圖中前進。由於CALayers
比UIView
更輕。
要創建適用於Mac和iOS常見的骨骼,請使用CALayers
您的應用程序設計。因爲它在兩個平臺都可用。
UIView
具有使用代表-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
,tochesStart
類似事件和其他UIKit
功能實現的觸摸事件的功能。
與CALayers
一起使用核心圖形的知識。任何簡單的視圖渲染UIView
就足夠了。
- 1. CALayer -drawInContext和-renderInContext之間有什麼區別?
- 2. iPhone遊戲開發時使用CALayer和UIView有什麼區別?
- 3. [UIView transitionWithView ...]和[UIView transitionFromView ...]之間的區別
- 4. 「層」和「層」之間有什麼區別?
- 5. Tableau和QlikView之間有什麼區別
- 6. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 7. @Entity和@embeddable之間有什麼區別
- 8. ContentObservable和DataSetObservable之間有什麼區別?
- 9. touchmove和gesturechange之間有什麼區別?
- 10. :notification.flags和notification.defaults之間有什麼區別?
- 11. proc和lambda之間有什麼區別?
- 12. :: after和after之間有什麼區別?
- 13. read()和io.read()之間有什麼區別?
- 14. Request()和Request.Form()之間有什麼區別?
- 15. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 16. getA()和this.getA()之間有什麼區別?
- 17. (int)和intval()之間有什麼區別?
- 18. set_value和= pandas之間有什麼區別
- 19. * zoom和zoom之間有什麼區別?
- 20. {0}和「」之間有什麼區別?
- 21. typedef和using之間有什麼區別?
- 22. 「」和「'之間有什麼區別?
- 23. STDIN和tty之間有什麼區別?
- 24. +和%之間有什麼區別?
- 25. sysfs_create_file()和sysfs_create_group()之間有什麼區別?
- 26. Lazy.Force()和Lazy.Value之間有什麼區別
- 27. -existingObjectWithID:error:和-objectWithID之間有什麼區別?
- 28. ReleaseFloatArrayElements和DeleteLocalRef之間有什麼區別
- 29. AutomationProperties.AutomationID和AutomationProperties.Name之間有什麼區別?
- 30. gets()和getc()之間有什麼區別?
一個很好的藝術答案。 –
很棒的簡短回答! –