两者都具有大部分相同的属性,都支持不同类型的动画,都表示不同的数据。 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. dpm()和dsm()之间有什么区别?
- 5. @dynamic和@synthesize之间有什么区别?
- 6. vbNullString和“”之间有什么区别吗?
- 7. * zoom和zoom之间有什么区别?
- 8. String.Concat,string.format和+之间有什么区别?
- 9. StaticLayout和DynamicLayout之间有什么区别
- 10. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之间有什么区别?
- 11. :: after和after之间有什么区别?
- 12. bundle.setup和bundle.require之间有什么区别
- 13. (int)和intval()之间有什么区别?
- 14. %.02f和%.2f之间有什么区别?
- 15. {$ var}和$ var之间有什么区别?
- 16. ReleaseFloatArrayElements和DeleteLocalRef之间有什么区别
- 17. {0}和“”之间有什么区别?
- 18. getA()和this.getA()之间有什么区别?
- 19. @observable和@published之间有什么区别
- 20. $ {}和#{}之间有什么区别?
- 21. url.getFile()和getpath()之间有什么区别?
- 22. KVC和Properties之间有什么区别?
- 23. Lazy.Force()和Lazy.Value之间有什么区别
- 24. form_for和remote_form_for之间有什么区别
- 25. STDIN和tty之间有什么区别?
- 26. StringTokenizer和java.util.Scanner之间有什么区别
- 27. “层”和“层”之间有什么区别?
- 28. 1.1em和1.05em之间有什么区别?
- 29. proc和lambda之间有什么区别?
- 30. ViewFlipper和ViewSwitcher之间有什么区别
一个很好的艺术答案。 –
很棒的简短回答! –