Ambos tienen la mayoría de los mismos atributos, ambos admiten diferentes tipos de animaciones, ambos representan datos diferentes. ¿Cuáles son las diferencias entre un UIView y un CALayer?¿Cuáles son las diferencias entre un UIView y un CALayer?
Respuesta
En iOS, cada UIView está respaldado por un CALayer Core Animation, por lo que se trata de CALayers cuando se utiliza un UIView, aunque es posible que no se dé cuenta. A diferencia de las NSViews en Mac, que evolucionaron antes de que existiera Core Animation, las UIViews pretenden ser envoltorios livianos alrededor de estos CALayers.
Como describo en la pregunta similar "When to use CALayer on the Mac/iPhone?", trabajar directamente con CALayers no le ofrece ventajas de rendimiento significativas sobre UIViews. Una de las razones por las que puede querer construir un elemento de interfaz de usuario con CALayers en lugar de UIViews es que se puede portar muy fácilmente a la Mac. Los UIView son muy diferentes de NSViews, pero los CALayers son casi idénticos en las dos plataformas. Esta es la razón por la cual el marco de Trazado principal presenta sus gráficos utilizando CALayers en lugar de otros elementos de la IU.
Una cosa que UIViews proporciona sobre CALayers es el soporte integrado para la interacción del usuario. Se encargan de las pruebas de golpe en toques y otras acciones relacionadas que necesitaría construir usted mismo si administra una jerarquía de CALayers. No es tan difícil implementarlo usted mismo, pero es un código adicional que necesitaría escribir al construir una interfaz solo de CALayer.
A menudo tendrá que acceder a las capas subyacentes de una UIView cuando realice animaciones más complejas de lo que permite la clase base UIView. Las capacidades de animación de UIView han crecido a medida que el SDK de iOS ha madurado, pero todavía hay algunas cosas que se hacen mejor interactuando con el CALayer subyacente.
Desde el blog de Ray Wenderlich (Tutorial)
CALayers son simplemente clases que representan un rectángulo en la pantalla con contenido visual. "Pero esperen un minuto", pueden decir, "¡eso es para lo que son UIViews!" . Eso es verdad, pero hay un truco para eso: ¡cada UIView contiene una capa de raíz que atrae!
En pocas palabras, UIView hereda de NSResponder, controlar eventos de usuarios, contiene CALayer, que hereda de NSObject, se centran principalmente en el renderizado, animación, etc.
La gran diferencia está UIView está diseñado para Cocoa Touch en el dispositivo móvil. Agrega algún controlador de eventos que CALayer no proporcionó.
UIView
es un contenedor para CALayers
. Usando UIKit
.
CALayer
donde dibujamos los contenidos. Usando CoreGraphics
Si trabaja con funciones de control personalizado, sería genial seguir adelante con la vista única que contiene más capas para una representación nativa precisa. Desde CALayers
son menos de UIView
.
Para crear un esqueleto común para Mac e iOS, siga el diseño de su aplicación usando CALayers
. Dado que está disponible en ambas plataformas.
UIView
tener función como eventos de toque consigue utilizando delegados -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
, tochesStart
como eventos y otras características UIKit
.
Para trabajar con CALayers
utilice el conocimiento de Core Graphics. Para cualquier vista simple, la representación UIView
es suficiente.
- 1. ¿Cuáles son las diferencias entre un compilador y un enlazador?
- 2. ¿Cuáles son las diferencias entre $ {} y # {}?
- 3. ¿Cuáles son las diferencias entre un programa y una aplicación?
- 4. ¿Cuáles son las diferencias y similitudes entre MVC y MVVM?
- 5. ¿Cuáles son las diferencias fundamentales entre OSGi y Java EE?
- 6. ¿Cuáles son las diferencias entre touchmove y gesturechange?
- 7. ¿Cuáles son las diferencias entre romper y salir?
- 8. ¿Cuáles son las diferencias entre OllyDbg y WinDbg?
- 9. ¿Cuáles son las diferencias entre JSP y Facelets?
- 10. ¿Cuáles son las diferencias entre AssemblyVersion, AssemblyFileVersion y AssemblyInformationalVersion?
- 11. ¿Cuáles son las diferencias entre Flash Professional y Flash Builder?
- 12. ¿Cuáles son las diferencias entre PEG y CFG?
- 13. ¿cuáles son las diferencias exactas entre jsch ChannelExec y ChannelShell?
- 14. ¿Cuáles son las diferencias entre delegados y eventos?
- 15. ¿Cuáles son las diferencias entre la lechuga y la pictografía?
- 16. ¿Cuáles son las diferencias entre Doctrine1 y Doctrine2?
- 17. Cuáles son las diferencias en JIT entre Java y .Net
- 18. ¿Cuáles son las diferencias actuales entre jQuery y Prototype?
- 19. ¿Cuáles son las diferencias entre LinFu.DynamicProxy y Castle.DynamicProxy?
- 20. ¿Cuáles son las diferencias entre NSURLConnection y ASI-HTTP-Request?
- 21. ¿Cuáles son las principales diferencias entre Meteor, Ember.js y Backbone.js?
- 22. ¿Cuáles son las principales diferencias entre Cocoa y CocoaTouch?
- 23. ¿Cuáles son las diferencias reales entre Zend Framework y Django?
- 24. ¿Cuáles son las principales diferencias entre Sinatra y Ramaze?
- 25. ¿Cuáles son las mayores diferencias entre fopen y curl?
- 26. ¿Cuáles son las diferencias entre MVC, MVP y MVVM?
- 27. ¿Cuáles son las diferencias entre VBA 6.0 y VBA 7.0?
- 28. ¿Cuáles son las diferencias entre Gtk + y Qt?
- 29. ¿Cuáles son las diferencias entre Vanilla Perl y Strawberry Perl?
- 30. ¿Cuáles son las diferencias entre el objeto JSON y JavaScript?
Una buena respuesta artística. –
¡Excelente respuesta corta! –